0

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

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

  • 安全_用户_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

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

4

1 回答 1

0

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

为了解决这个问题,我必须使用validate:false

我浪费了很多时间阅读有关 Rails 默认值的信息,例如

config.active_record.whitelist_attributes = true 

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

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

错误。

于 2013-06-28T17:01:13.230 回答