• Home
  • Akiko Yokoyama
  • Contact
  • Feed
ja | en |

Rails console command tips

Railsコンソールのできることが定期的にググってしまうので書いていく

参考サイト

  • ActiveRecord入門 - Qiita

Railsコンソールあるある

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
$ rails c

pp Category.select("id, name").first.to_json
D, [2018-02-02T17:24:24.080967 #78025] DEBUG -- :   Category Load (0.3ms)  SELECT  id, name FROM `categories` WHERE `categories`.`deleted_at` IS NULL  ORDER BY `categories`.`id` ASC LIMIT 1
{"id":100,"name":"test name"}

#全カテゴリをとってくる
pp Category.all

#特定のIDのカテゴリをとってくる
pp Category.find(1)

#特定のIDのカテゴリのIDを取得
pp Category.find(1).id

#カテゴリの最初のレコードをとってくる
pp Category.first

#カテゴリの最後のレコードをとってくる
pp Category.last

#全カテゴリの`id`,`name`をとってくる
pp Category.select("id, name")

#全カテゴリの`id`,`name`のレコード数をとってくる
pp Category.select("id, name").size

#全カテゴリのname = "test name"をとってくる
pp Category.where(name: "test name")

#全カテゴリのname = "test"をID順でソートして3件とってくる
pp Segment.where(name: "test").order(:id).limit(3).to_json

#全カテゴリのname = "test"をID順でソートして1番目から3件とってくる
pp Segment.where(name: "test").order(:id).limit(3).offset(1).to_json

1
2
3
4
5
6
7
8
今の時間からランダムな4,5,6日後のいずれかを返す
[4,5,6].sample.days.from_now
=> Wed, 07 Feb 2018 19:21:07 JST +09:00


rand(1..10).days.ago
rand(1..10).hours

FactoryGirlの書き方メモ Blogモデルの例 nameとdescriptionには、連番で数字が入るようになり、 カテゴリは’programming’,’design’,’marketing’,’sales’のいずれかのランダム

1
2
3
4
5
6
7
8
9
10
$ vim spec/factories/blogs.rb 

FactoryGirl.define do
  factory :blog do
    sequence(:name){|n| "name #{n}"}
    sequence(:category){ ['programming','design','marketing','sales'].sample }
    sequence(:description){|n| "description #{n}"}
    sequence(:user_id){ rand(1..3) }
  end
end

blogの呼び出し

1
FactoryGirl.create :blog

日付の扱いについて

1
2
start_datetime { rand(1..10).days.ago }
end_datetime { start_datetime + rand(1..10).hours }

as nameにする公文はこちら

1
2
User.select("settings -> 'language' as user_language")
User Load (7.1ms)  SELECT settings -> 'language' as user_language FROM `users` WHERE `users`.`deleted_at` IS NULL

Productとcategories, product_imagesをとってきて、categoriesのid2,1,6をDISTINCTする

1
Product.includes(:categories, :product_images).where(categories:{id:[2,1,6]}).uniq

console 見やすくする

1
2
3
4
5
6
7
8
9
10
extend Hirb::Console

table Category.all, vertical: true

********************* 1. row *********************
            id: 1
          name: category_name
    created_at: 2018-01-15 23:16:11 +0900
    updated_at: 2018-01-15 23:16:11 +0900
********************* 2. row *********************
user-image
Akiko yokoyama in Coding
5 minute read

Similar Posts

3年前にブログの多言語化対応を実はしていた話

Leica Q2 を購入して1年経ちました &レビュー

ブログの再構築を Jekyll + Netlify + Github で行った話

Excel Tips vol.1

WSL / Windows Subsystem for Linux + Ubuntuのセットアップ方法

user-image

Published Feb 2, 2018

Akiko yokoyama in Coding

Also found in

  • Coding

Share this article

3年前にブログの多言語化対応を実はしていた話

Leica Q2 を購入して1年経ちました &レビュー

ブログの再構築を Jekyll + Netlify + Github で行った話

Excel Tips vol.1

WSL / Windows Subsystem for Linux + Ubuntuのセットアップ方法

チャットボット hubot adapterを利用した Slack と Chatwork連携コードサンプル

  • Home
  • Akiko Yokoyama
  • Contact
  • Feed