Ruby on rails Rails作用域方法返回WhereChain而不是数组
在我的Deal类中,我添加了一个scope方法:Ruby on rails Rails作用域方法返回WhereChain而不是数组,ruby-on-rails,Ruby On Rails,在我的Deal类中,我添加了一个scope方法: scope :current, -> { where {|d| d.end_date > Date.today} } 它返回正确的数据,但不是返回一个可以计数、迭代等的数组,而是返回一个ActiveRecord::QueryMethods::WhereChain,我对此无能为力 我注意到对Deal.current的调用以@scope=开头: 我想,如果我知道如何使用一个正常的WHERE语句来进行比较,而不是使用相等的方法,比如DeN
scope :current, -> { where {|d| d.end_date > Date.today} }
它返回正确的数据,但不是返回一个可以计数、迭代等的数组,而是返回一个ActiveRecord::QueryMethods::WhereChain,我对此无能为力
我注意到对Deal.current的调用以@scope=开头:
我想,如果我知道如何使用一个正常的WHERE语句来进行比较,而不是使用相等的方法,比如DeNoDyDATE>DATION,这将帮助我解决问题,因为一个使用一个简单的WHERE语句像范围的方法:张贴,->{Lo.NoPoStddReDel:NIL}返回一个正常可用的ActuvErrord.Relax,但我确实想弄清楚如何正确使用像这样更复杂的where查询
您可以使用以下选项: 范围:当前,->{where'end_date>?',date.today} where调用的块语法在Rails中不存在 你也可以看看阿雷尔 deal=deal.arel\u表 Deal.wheredeal[:end_date].gtDate.today不完全是,不!使用arel_表,它仍然是ruby,不是真正的SQL,但是越高级的查询,就越接近SQL!无法永远避免:。
Deal.current
Deal Load (1.0ms) SELECT "deals".* FROM "deals"
=> #<ActiveRecord::QueryMethods::WhereChain:0x00007fbc61228038
@scope=
[#<Deal:0x00007fbc5fdb2400
id: 7,