MassAssignmentSecurity ::错误:无法批量分配受保护的属性:security_users_detail

时间:2013-06-27 16:57:29

标签: ruby-on-rails-3 mass-assignment

我有很多关于这个问题的话题,但我仍然无法理解我做错了什么:

我有两个模型,具有以下关系:

  • securty_user_rb:

    attr_accessible ...(some fields)
                    :security_users_detail
    
    has_one :security_users_detail, dependent: :destroy
    
  • security_users_detail.rb

    attr_accessible ...(some fields)
    
    belongs_to :security_user
    

并在security_users_controlller.rb中我在新操作中执行此操作:

@security_user = SecurityUser.new(params[:security_user])
@security_user.build_security_users_detail(security_users_detail: SecurityUsersDetail.new)

为什么我无法构建连接而我正在

  

无法批量分配受保护的属性:security_users_detail

错误,因为我在模型中有attr_accessible:security_users_detail?

修改

我试着在我的applicatin.rb文件中评论以下行,以检查问题是否会得到解决:

config.active_record.whitelist_attributes = true

不幸的是,我再次遇到同样的错误(重启服务器后),所以我想我的问题与其他一些事情有关。

1 个答案:

答案 0 :(得分:0)

整个问题是由我的详细信息模型中的验证引起的 - 我有验证检查格式和某些字段的存在,所以显然rails不允许我创建具有空字段的对象。

要解决此问题,我必须使用 validate:false

我已经浪费了很多时间阅读有关像

这样的rails默认值
config.active_record.whitelist_attributes = true 

和使用attr_accessible,但似乎失败的验证可以抛出相同的

  

无法批量分配受保护的属性

错误。