[英]Rails - Restricting results in has_many association
我有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
並僅返回與該經銷商關聯的角色,但是目前,它返回與該用戶關聯的所有角色,無論是否參考其他經銷商。
如何修改模型以允許dealer.users.first.roles
僅返回與所選經銷商和用戶相關聯的角色, dealer.users.first.roles
返回該用戶的所有角色?
查詢的問題在於,您要找到經銷商的第一個用戶,然后詢問該用戶的角色,這與經銷商無關。
如果您已經知道想要什么經銷商,並且想要該經銷商的第一個用戶,則可以執行以下操作
@dealer = dealer
@user = @dealer.users.first
@roles = Role.where("user_id = ? AND dealer_id = ?", @user.id, @dealer.id)
這應該僅返回該用戶和該經銷商共享的角色。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.