Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

handling order with has_many through relationship

I have two models: project and task (for example) with a join model: project_task enabling a has_many through relationship so that tasks may be shared across projects.

I have specified position as an attribute of the project_task model. Now I want to be able to access tasks by their position in the project_tasks table via a given project.

i.e. project.tasks (ordered by the position listed for each task in the project_tasks table).

Is this possible?

like image 218
Paul Nelligan Avatar asked May 16 '11 12:05

Paul Nelligan


2 Answers

This is what works for me in Rails 5.x :

has_many :project_tasks
has_many :tasks, -> { order('project_tasks.position') }, through: :project_tasks
like image 153
Adam Foldvari Avatar answered Oct 17 '22 08:10

Adam Foldvari


I think something like that can help you:

has_many :project_tasks
has_many :tasks, :through => :project_tasks, :order => 'project_tasks.position'
like image 26
Dmitry Polushkin Avatar answered Oct 17 '22 07:10

Dmitry Polushkin