railsがんばる子

Ruby on Railsがんばる子です。胡蝶蘭のECサイトを運営しています。

ActiveRecord::Relationを返すならscope

def self.availables
  where(available: true)
end
scope :availables, -> { where(available: true) }

scopeチェーンできるもの(ActiveRecord::Relationが返るもの)はscopeで、 Relation以外の戻り値を返すものは、クラスメソッドに整理しておけば、 新しく何か検索処理を実装したいときに、scopeにあるものを見て、 既存のscopeの組み合わせで実現できないかなど検討しやすいですよね。

なるほど!!!!