В моем классе Deal
я добавил метод области действия:
scope :current, -> { where {|d| d.end_date > Date.today} }
Он возвращает правильные данные, но вместо возврата массива, который я могу считать, повторять и т. Д., Он возвращаетActiveRecord::QueryMethods::WhereChain
, и я ничего не могу с этим поделать.
Я заметил, что вызов Deal.current
начинается с "@scope=
":
Deal.current
Deal Load (1.0ms) SELECT "deals".* FROM "deals"
=> #<ActiveRecord::QueryMethods::WhereChain:0x00007fbc61228038
@scope=
[#<Deal:0x00007fbc5fdb2400
id: 7,
Я полагаю, еслиЯ знал, как использовать «нормальный» оператор where
для сравнения (а не равенства), такой как where(end_date>Date.today)
, который бы помог моей проблеме, так как метод области действия, использующий простой оператор where
, такой как scope :posted, -> { where.not(posted_date:nil) }
, возвращаетобычно используется ActiveRecord.Relation
, но я хочу выяснить, как использовать более сложные, где запросы, подобные этому, правильно.