我的模特是
class Job < ActiveRecord::Base
belongs_to :client
end
class Client < ActiveRecord::Base
has_many :jobs
end
在控制器中我希望得到客户端已排序的作业。 如果我这样做(没有订购)
@client = Client.find(params[:id], :include => {:jobs => :status})
一切都好。但如果我添加订购:
@client = Client.find(params[:id], :include => {:jobs => :status}, :order => 'job.level DESC')
//:动态设置顺序(不是在这个例子中) - 我知道:has_many中的顺序。
结果只有3行(每个job.level一行)。我记录了sql查询并执行了它,结果没问题,但在应用程序中我只有这3行。 排序工作的正确方法是什么?谢谢
答案 0 :(得分:0)
您可以尝试直接在模型中指定订单而不是控制器
class Job < ActiveRecord::Base
belongs_to :client, :order => 'level DESC'
end
OR
class Client < ActiveRecord::Base
has_many :jobs, :order => 'level DESC'
end
此外,作业模型中的级别是什么数据类型?如果您可以发布日志以获取有用的sql查询。还有,你试过吗
:order => 'jobs.level'
而不是您发布的代码中使用的单数job.level?
答案 1 :(得分:0)
这不是我原本想要的,但它有效,所以这就是答案
@jobs = @client.jobs.find(:all, :order => sort_column + " " + sort_direction)