Rails - Where:created_at less(old)than self.created_at(Mongoid)

时间:2017-05-27 10:33:54

标签: ruby-on-rails ruby mongoid

(我已经看过所有相关的问题,但没有一个对我有用)

<tr class="mergedrow"> <th scope="row"> <a href="/wiki/Countries_of_the_United_Kingdom" title="Countries of the United Kingdom">Country </a> </th> <td>England</td> </tr>上,我需要在 self 之前获取最后一条记录,但无法弄清楚如何查询“before_update”。我正在尝试这个:

created_at < self.created_at

我收到了这个错误:

  

784毫秒内完成500内部服务器错误

     

ArgumentError(错误的参数数量(给定2,预期1))

     

app / models / reporte.rb:49:'set_update_consumo'

     

app / controllers / reportes_controller.rb:57:在`block in update'

     

app / controllers / reportes_controller.rb:56:在`update'

如果我删除def set_update_consumo lastRecord = Reporte.where(:hidrometro_id => self.hidrometro_id) .where('created_at < ?', self.created_at) .order_by(:created_at => 'desc').offset(1).first set_record(lastRecord) end 则可行。 SO中的其他答案都没有对我有用,也不能使用宝石(如吱吱声)。

我正在使用Rails 5.0.2(Ruby 2.4)和 Mongoid

1 个答案:

答案 0 :(得分:3)

在Mongoid中,where语法与ActiveRecord略有不同,实际上只需要一个参数 - 一个哈希。对于&#34;小于&#34;表达式需要在属性符号上使用.lt方法:

where(:created_at.lt => self.created_at)

有关详细信息,请参阅docs

此外,您可能不必在此使用self,而简单的created_at应该会给出相同的结果。