Rails4ではscope
にlambda
を付けないと、チェインが外れる。
class User < ActiveRecord::Base
scope :active, where("active IS TRUE")
scope :from_latest, order("created_at DESC")
end
等としていると、
User.active.from_latest
等としたときにactive
のスコープが適用されない(と思う)。
class User < ActiveRecord::Base
scope :active, lambda{where("active IS TRUE")}
scope :from_latest, lambda{order("created_at DESC")}
end
としなければならない。
ワーニングが出なかったように思うので、Rails 3からの移行時はお気をつけを。
実際に付け忘れて、OUTER JOINで数万と数万のテーブルWHERE句なしにをつなげて全件取得し、酷いことになった。