Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails作用域方法返回WhereChain而不是数组_Ruby On Rails - Fatal编程技术网

Ruby on rails Rails作用域方法返回WhereChain而不是数组

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

在我的Deal类中,我添加了一个scope方法:

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,