通过关系处理has_many的订单

时间:2011-05-16 12:34:25

标签: ruby-on-rails activerecord

我有两个模型:项目和任务(例如)和一个连接模型:project_task启用has_many通过关系,以便可以跨项目共享任务。

我已将position指定为project_task模型的属性。现在,我希望能够通过给定项目在project_tasks表中按位置访问任务。

即。 project.tasks(按project_tasks表中为每个任务列出的位置排序)。

这可能吗?

3 个答案:

答案 0 :(得分:18)

我觉得这样的事情可以帮助你:

has_many :project_tasks
has_many :tasks, :through => :project_tasks, :order => 'project_tasks.position'

答案 1 :(得分:2)

class Task < AR::Base
   belongs_to :project
   has_one :project_tasks,:through=>:project_tasks
end

class Project < AR::Base 
  has_many :project_tasks
  has_many :tasks ,:through=>:project_tasks,:order => 'project_tasks.position'
end

class ProjectTask < AR::Base
  belongs_to :task
  belongs_to :project
end

答案 2 :(得分:0)

这是在Rails 5.x中对我有效的方法:

has_many :project_tasks
has_many :tasks, -> { order('project_tasks.position') }, through: :project_tasks
相关问题