この特定の質問に対処するために何を検索すべきかについてはまだわかりません。 だからここに行く...ネストされたクエリのサブセット
私の現在の設計:
User < AR
has_many :items
has_many :projects
Project < AR
has_many :groups
Group < AR
has_many :items
考える@project
と@user
はどのように私はプロジェクト(@project.groups
)のためのグループを取得しますが、これらのグループが与えられたためitems
だけ含まれている必要があります@ユーザー?
これは、コントローラーロジックではなくモデルで処理する必要があるようですが、これを実行するための最良のRailsの方法は何か分かりません。私は範囲とカスタムファインダーを調査しましたが、不必要に複雑に思えます。おそらく、それはモデル間の関係の欠陥です。
編集:おそらくこれは役に立ちますか?経由:
class User < ActiveRecord::Base
has_many :projects
has_many :groups, :through => :projects
has_many :items, :through => :groups
end
class Project < ActiveRecord::Base
has_many :groups
end
class Group < ActiveRecord::Base
has_many :items
end
次に、あなただけ呼び出すことができます。
@user.items
を与えられたユーザのための項目のすべてを取得するために
User < AR
has_many :items
has_and_belongs_to_many :projects
Project < AR
has_many :groups
has_and_belongs_to_many :users
Group < AR
has_many :items
'Group'は複数のプロジェクトに属しますか?あなたの質問は、あなたのモデルデザインはそうではないことを意味します。 –
プロジェクトの所有者または特定のユーザーのアイテムを含むすべてのグループを希望しますか? –
@KandadaBogguグループは複数のプロジェクトに属することはできません。 – Stefan