以下のような2つのscopeがあるActiveRecordのクラスがあるとする。
class Clip < ActiveRecord::Base
scope :display, -> { order("clips.updated_at DESC") }
scope :undone, -> { where.not(status: 8) }
end
[7]の実行結果が理解できない。直すかバグ報告したい。Edgeでは確認していない。
[4] pry(main)> Clip.display # display scope 単独
Clip Load (0.3ms) SELECT "clips".* FROM "clips" ORDER BY clips.updated_at DESC
=> []
[5] pry(main)> Clip.undone# undone scope 単独
Clip Load (0.3ms) SELECT "clips".* FROM "clips" WHERE ("clips"."status" != 8)
=> []
[6] pry(main)> Clip.display.undone # display -> undone の順で呼び出す
Clip Load (0.3ms) SELECT "clips".* FROM "clips" WHERE ("clips"."status" != 8) ORDER BY clips.updated_at DESC
=> []
[7] pry(main)> Clip.undone.display # undone -> display の順序で呼び出すとnilになる。
#<ActiveRecord::Relation::ActiveRecord_Relation_Clip:0x007f80620108d0>=> nil