【发布时间】:2015-03-10 19:56:17
【问题描述】:
我必须使用 Mongoid 在 sinatra 应用程序中检索 mongodb 记录。 为此,我尝试使用以下查询对检索到的记录进行排序:
@bin = Bin.find_by(bin_id: params[:bin_id]).order_by(:created_at.desc)
但是我得到了 NoMethodError,
NoMethodError - undefined method `order_by' for #<Bin:0x00000101d24d60>:
/Users/harshsingh/Documents/Codes/mogreet-requestbin/app.rb:79:in `block in <class:App>'
/Users/harshsingh/.rvm/gems/ruby-2.1.2/gems/sinatra-1.4.5/lib/sinatra/base.rb:1603:in `call'
/Users/harshsingh/.rvm/gems/ruby-2.1.2/gems/sinatra-1.4.5/lib/sinatra/base.rb:1603:in `block in compile!'
/Users/harshsingh/.rvm/gems/ruby-2.1.2/gems/sinatra-1.4.5/lib/sinatra/base.rb:966:in `[]'
...
我不确定为什么 order_by 不起作用,我尝试查看 Mongoid 文档但找不到任何对我有帮助的内容。
编辑:
抱歉,我忘了提,我在 Bin 文档中有一个嵌入文档,名为 Callback,关系为 embeds_many :callbacks 和 embedded_in :bin, :inverse_of => :bins,所以我想在一个特定 @ 中对 callbacks 文档进行排序987654329@ 基于created_at。
【问题讨论】:
-
按照@basia 的建议,我通过在视图页面的
for loop中添加order_by(created_at: "desc")解决了这个问题,类似于<% for callback in @bin.callbacks.order_by(created_at: "desc") %>。
标签: ruby-on-rails ruby mongodb sinatra mongoid