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

时间:2011-05-28 18:54:15

标签: ruby-on-rails nested-attributes mass-assignment

更新代码格式以便更好地查看。

民间,

我一直在看这个,但我不明白这里有什么可能搞乱的。我正在使用Devise。

class User < ActiveRecord::Base
  has_many :addresses
  accepts_nested_attributes_for :addresses

  # Other stuff here
end

class Address < ActiveRecord::Base

  belongs_to :user

  validates_presence_of :zip #:street_address1, 

  

--------------------日志输出开始------------------------ ------

     

在127.0.0.1开始POST“/ users”   2011-05-28 11:43:27 -0700加工   通过RegistrationsController #create as   HTML参数:{“utf8”=&gt;“√”,   “authenticity_token”=&gt; “中CEmdqlsmdYa6Jq0iIf5KAxxISsUCREIrFNXWkP80nhk =”,   “用户”=&GT; { “电子邮件”=&gt; “中a2@gmail.com”,   “password”=&gt;“[FILT ERED]”,   “addresses_attributes”=&GT; { “0”=&GT; { “street_address1”=&gt;“中234   Pitkin Ct。“,”zip“=&gt;”12456“}}},   “commit”=&gt;“注册”}警告:不能   质量分配受保护的属性:   addresses_attributes SQL(0.0ms)   开始SQL(164.0ms)显示表格   用户负载(0.0ms)SELECT usersid   FROM users WHERE(usersemail =   BINARY'a2 @ gmail.com')LIMIT 1 SQL   (1.0ms)ROLLBACK

     

-------------------- log output end ------------------------ ------

发布的数据中存在zip,发布的数据似乎格式正确。在网页表单上,我收到“地址zip不能为空”的错误。我已经挖出了导致“无法大量分配受保护属性”的警告,但没有找到任何可以帮助我的东西。

感谢您的想法和指示。

-S

4 个答案:

答案 0 :(得分:38)

看看这里并学习:)

http://railscasts.com/episodes/26-hackers-love-mass-assignment


编辑:

在用户模型中使用accepts_nested_attributes_for可以将数据发送到地址模型。

然后,在地址模型中,您必须设置所请求的attr_accessible

答案 1 :(得分:11)

SpecificModel内部( appfolder / app / model / specific_model.rb

尝试使用

attr_accessible :addresses_attributes, :another_attribute_to_make_mass_assignable, :another_attribute, etc.

答案 2 :(得分:5)

如今(2013年4月),您应该开始使用https://github.com/rails/strong_parameters

答案 3 :(得分:3)

只需在模型中包含数据字段,如下所述

attr_accessible :addresses_attributes