我目前正在尝试在 Rails 中创建一个相当简单的关联,但事实证明它比我想象的要困难。
我有 3 个模型,用户、经销商和角色。用户/经销商是多对多的。用户可以有许多角色,但他们应该是特定于经销商的——即用户可以在一个经销商处担任经理和主管,在另一个经销商处担任经理,在另一处担任主席。
我正在寻找的结果是我将能够做到user.dealer.roles
并且(例如对于第一个经销商)它将返回经理和董事。如果我这样做也会发生同样的情况dealer.user.roles
.
My classes look as follows:
class User :dealer_users
has_many :dealer_user_roles, :through => :dealer_users
has_many :roles, :through => :dealer_user_roles
end
class Dealer :dealer_users
has_many :dealer_user_roles, :through => :dealer_users
has_many :roles, :through => :dealer_user_roles
end
class Role :dealer_user_roles
has_many :users, :through => :dealer_users
end
The tables look like (green tables):
I am trying to seed the database using the following code:
dealer = Dealer.where(name: Faker::Company.name).first_or_create
user = User.where(email: Faker::Internet.email).first_or_create
user.first_name = Faker::Name.first_name
user.last_name = Faker::Name.last_name
user.password = 'password'
user.password_confirmation = 'password'
dealer.users user.id).first.roles 1 + Random.rand(4))
这会导致错误,即:“无法修改关联 'User#roles',因为它通过多个其他关联。”
谁能帮助我告诉我哪里出错了,以及我该如何解决?