さてさて、Active Record クエリインターフェイスを読んで行きます。
あ、これ知らなかったなーなんていうことをまとめておきます。
.first(3)
とすると3つとれる。 なんだってー
バッチ
プログラムの一連の流れ あらかじめ決めておいた処理のまとまりのようなもの
scope
category.articles.published
の、publishedの部分のこれ。
これができるようにするためのもの
class Article < ApplicationRecord scope :published, -> { where(published: true) } end
と書く!! メソッドのようなものだが、スコープとして定めておくと、クエリが発行されて
class Article < ApplicationRecord def self.published where(published: true) end end
と書いたことと同義になる。
スコープは自由に定義することが可能、ということですな。
ただし1つ注意点があります。それは条件文を評価した結果がfalseになった場合であっても、スコープは常にActiveRecord::Relationオブジェクトを返すという点です。クラスメソッドの場合はnilを返すので、この振る舞いが異なります。したがって、条件文を使ってクラスメソッドを連鎖させていて、かつ、条件文のいずれかがfalseを返す場合、NoMethodErrorを発生することがあります。
これは注意が必要そう。
15 動的検索
実は動的にメソッドが作られていた。
find_by_method
のような形。
18 sqlで検索
find_by_sql
18.2 pluck
モデルから、必要なidだけとりたいとかnameを引っ張りたい時に便利
Client.select(:id).map(&:id)
といった記述をしなくてもOK
19 オブジェクトの存在チェック
Client.exists?(id: [1,2,3])
という感じ