我有2个模型 User 和 Role ,并且has_many:通过它们之间的关系
class User < ApplicationRecord
has_many :user_roles,
has_many :roles, through: :user_roles
end
和
class Role < ApplicationRecord
has_many :user_roles,
has_many :users, :through => :user_roles
end
并关联模型
class UserRole < ApplicationRecord
belongs_to :user
belongs_to :role
end
问题是如何通过控制台将角色分配给特定用户。我尝试过
>User.last.roles = [:admin] (Role which I want to assign has name: admin and role_id: 1)
但出现错误
ActiveRecord :: AssociationTypeMismatch(预期角色(#47275896707120),得到了:admin,它是Symbol(#47275846312980)的实例)
答案 0 :(得分:1)
您只需要传递一个Role实例:
admin_role = Role.find(...)
User.last.roles = [admin_role]
答案 1 :(得分:1)
传递角色实例:
User.last.roles << Role.find_by(name: :admin)
您还希望使用<<
(铲子)运算符添加到关联中,而不是使用将其替换的设置器。