class User < ActiveRecord::Base
has_many :assignments
has_many :projects, through: :assignments
end
class Assignment < ActiveRecord::Base
belongs_to :user
belongs_to :project
end
class Project < ActiveRecord::Base
has_many :assignments
has_many :users, through: :assignments
has_many :tasks
end
class Task < ActiveRecord::Base
belongs_to :project
end
というモデルがある。
ここで、user 指定(id = 1)で task を取り出すには、以下のようになるのだけど、
Task.joins(project: {assignments: :user}).where(users: {id: 1})
「joins の中って、単数?複数?どっち?」みたいなことで悩んでしまった。
もちろん、
tasks(多)- project(1)- assignments(多)- user(1)
ということ。
where については、テーブル名指定なので users。