0

我的模型中有以下关系:

  • 安全用户.rb
has_many :security_users_roles_to_users
has_many :security_users_roles, through: :security_users_roles_to_users
accepts_nested_attributes_for :security_users_roles
  • security_users_roles_to_users.rb

属于_to :security_user
属于_to :security_users_role

  • 安全用户角色.rb

has_many :security_users_roles_to_users
has_many :security_users,通过::security_users_roles_to_users

目的是在用户和角色模型之间创建多对多关系。

创建新用户时,我想将其设置为默认角色(例如用户)。因此,在我的 security_users_controller.rb 中,在我的创建操作中:

@security_user = SecurityUser.new(params[:security_user])
@security_user.security_users_roles.role = 'user'

但我收到以下错误:undefined method `role=' for ...

为什么我无法以上述方式访问属性?

注意:我没有传递来自用户角色的任何信息。

4

1 回答 1

1

问题是这@security_user.security_users_roles是一个 ActiveRecord 关联,因此您不能在其上设置角色。

尝试类似的东西

@security_user.security_users_roles_to_users.build(security_users_role: SecurityUsersRole.find_by_role('user'))
于 2013-06-26T15:29:09.547 回答