我有两个模型:项目和任务(例如)和一个连接模型:project_task启用has_many通过关系,以便可以跨项目共享任务。
我已将position指定为project_task模型的属性。现在,我希望能够通过给定项目在project_tasks表中按位置访问任务。
即。 project.tasks(按project_tasks表中为每个任务列出的位置排序)。
这可能吗?
答案 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