簡體   English   中英

Rails-在has_many關聯中限制結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM