ユーザー、ディーラー、ロールの3つのモデルがあり、次のようになります。
class User < ActiveRecord::Base
has_many :roles
has_many :sales, :through => :roles
has_many :appraisals, :through => :roles
has_many :dealers, :through => :roles
end
class Dealer < ActiveRecord::Base
has_many :roles, :as => :role_originator
has_many :users, :through => :roles
end
class Sale < ActiveRecord::Base
has_many :roles, :as => :role_originator
has_many :users, :through => :roles
end
class Role < ActiveRecord::Base
belongs_to :role_type
belongs_to :user
belongs_to :role_originator, :polymorphic => true
end
アソシエーションは期待どおりに機能しています。たとえば、dealer.users
そのディーラーで役割を持つすべてのユーザーを取得できます。
dealer.users.first.roles
私が抱えている問題は、そのディーラーに関連付けられているロールのみを実行して返すことができるようにしたいということですが、現在、別のディーラーを参照しているかどうかに関係なく、ユーザーに関連付けられているすべてのロールを返します。 。
dealer.users.first.roles
モデルを変更して、選択したディーラーとユーザーに関連付けられているロールのみを返し、ユーザーのすべてのロールを返さないようにするにはどうすればよいですか?