【发布时间】:2017-03-21 16:34:14
【问题描述】:
在处理某些记录时,我一直在对输出进行一些编辑,但我遇到了排序选项不再起作用的问题。
最初,当我执行@record.class 时,事物是如何创建的,输出为Record::ActiveRecord_Relation < ActiveRecord::Relation
但是,在我进行更改后,现在班级发生了变化。所以现在当我运行@record.class 时,输出是Array < Object。
我认为这是我遇到这个问题的根本原因。
我的代码是
@q = @records.search(params[:q])
@records = @q.result(distinct: true).select { |k,_v| k[:disabled] }
@records = @records.order("records.updated_at desc").page(params[:page] || 1).per(params[:per] || 30)
我得到的错误是NoMethodError: undefined methodorder' for #`
现在我尝试通过
来解决这个问题@records = @records.sort_by("records.updated_at desc")
@records = @records.paginate.page(params[:page] || 1).per(params[:per] || 30)
但是,我的解决方案的第一行错误是 @records = @records.sort_by("records.updated_at desc"),如果我的 paginate 解决方案出现错误,我将无法越过该行。
如果有人可以看一下,我将不胜感激!
【问题讨论】:
-
如果您分享
search方法的来源(如果您编写了代码),这将很有用。 -
您使用
select选择某些记录(从数据库中加载所有记录)而不是使用where并仅从数据库中加载匹配记录的原因是什么?那会快得多。
标签: ruby-on-rails arrays ruby rails-activerecord