如何在控制器中访问模型嵌套属性?

时间:2013-06-26 15:26:15

标签: ruby-on-rails-3 controller nested-attributes

我的模特中有以下关系:

  • security_user.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
  

belongs_to:security_user
  belongs_to:security_users_role

  • security_users_roles.rb
  

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

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

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

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

但是我收到以下错误:未定义方法`role ='for ...

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

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

1 个答案:

答案 0 :(得分:1)

问题是@security_user.security_users_roles是ActiveRecord关联,因此您无法在其上设置角色。

尝试类似

的内容
@security_user.security_users_roles_to_users.build(security_users_role: SecurityUsersRole.find_by_role('user'))