0

我的模型是

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')

// :order 是动态设置的(不在这个例子中) - 我知道 has_many 中的 :order。

结果只有 3 行(对于每个 job.level 一个)。我记录了 sql 查询并执行了它,结果还可以,但是在应用程序中我只有这 3 行。什么是对工作进行排序的正确方法?谢谢

4

2 回答 2

0

您可以尝试直接在模型中而不是控制器中指定顺序

class Job < ActiveRecord::Base
  belongs_to :client, :order => 'level DESC'
end

或者

class Client < ActiveRecord::Base
  has_many :jobs, :order => 'level DESC'
end

另外,Jobs 模型中的级别是什么数据类型?如果您可以发布您的 sql 查询日志,那也会很有帮助。还有,你试过了吗

:order => 'jobs.level'  

而不是您发布的代码中使用的单数 job.level ?

于 2012-06-22T14:43:23.817 回答
0

这不是我最初想要的,但它有效,所以这就是答案

@jobs = @client.jobs.find(:all, :order => sort_column + " " + sort_direction)
于 2012-06-28T10:10:07.083 回答