Rails で has many_through 関係を作成する必要があります。返されるレコードは、結合テーブルが別のテーブルの特定のレコードに関連付けられているレコードのみです。
SQL で試しましたが、うまくいきません。以下の SQL リレーションをアクティブ レコード スタイルで表現するにはどうすればよいですか?
モデルは次のとおりです。
class User
has_many :organisation_roles
has_many :organisations,
through: :organisation_roles
end
class OrganisationRole
belongs_to :user
belongs_to :organisation
belongs_to :role
end
class Role
has_many :organisation_roles
end
class Organisation
has_many :organisation_roles
has_many :roles, through: :organisation_roles
has_many :users, through: :organisation_roles
# This doesn't work
has_many :members,
class_name: 'User',
through: :organisation_roles,
finder_sql: Proc.new {
%Q{
SELECT u.*
FROM users u, organisation_roles ors, roles r
WHERE ors.organisation_id = #{id} AND r.name = 'member'
}
}
# This doesn't either
has_many :managers,
through: :organisation_roles,
source: :user,
conditions: { organisation_roles: { role: { name: 'manager' }}}
end