我目前有一个将模型用户、经销商和角色链接在一起的设置。用户和经销商是多对多的,并且使用 Dealer_user 分配表按预期工作。
问题是我希望将角色分配给特定于经销商的用户(即,用户可以是一个经销商的销售经理和零件经理,而在另一个经销商中是销售经理和总监)。
为了做到这一点,我有一个角色模型(属于角色类型)。Role应该属于Dealer_user,而Dealer_user有很多Roles。
目的是我将能够做到
dealer.users.where(:id => user.id).first.roles
它只会返回特定于该经销商的角色。
我遇到的问题是,当我运行以下测试代码时:
dealer.users.where(:id => user.id).first.roles.create(:role_type_id => 1 + Random.rand(4))
我收到一个错误:
Cannot modify association 'User#roles' because the source reflection class 'Role' is associated to 'DealerUser' via :has_many.
谁能建议我对我的模型做错了什么(如下所示)?
注意: Role 与 Dealer_user 的 belongs_to 关系是多态的,因为它也可能属于 Sale_user 或其他需要与 Dealer 相同功能的关联表。
class Dealer < ActiveRecord::Base
attr_accessible :name, :address_id
has_many :dealer_users
has_many :users, :through => :dealer_users
has_many :roles, :through => :dealer_users
end
class User < ActiveRecord::Base
attr_accessible :first_name, :last_name
has_many :dealer_users
has_many :dealers, :through => :dealer_users
has_many :roles, :through => :dealer_users
end
class DealerUser < ActiveRecord::Base
attr_accessible :dealer_id, :user_id
belongs_to :dealer
belongs_to :user
has_many :roles, :as => :role_originator
end
class Role < ActiveRecord::Base
attr_accessible :role_type_id
belongs_to :role_type
belongs_to :role_originator, :polymorphic => true
end
编辑:到目前为止没有运气 - 任何人都可以帮忙吗?