Rails console command tips
Railsコンソールのできることが定期的にググってしまうので書いていく
参考サイト
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 *********************