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

San*_*jay 28 ruby-on-rails mass-assignment nested-attributes

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

伙计们,

我一直在看这个,但我不明白这里有什么可能搞乱的.我正在使用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, 
Run Code Online (Sandbox Code Playgroud)

结束

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

在2011-05-28 11:43:27 -0700开始POST"/ users"for 127.0.0.1由RegistrationsController处理#create as HTML参数:{"utf8"=>"√","authenticity_token"=>"CEmdqlsmdYa6Jq0iIf5KAxxISsUCREIrFNXWkP80nhk = ",""user"=> {"email"=>"a2 @ gmail.com","password"=>"[FILT ERED]","addresses_attributes"=> {"0"=> {"street_address1"=> "234 Pitkin Ct.","zip"=>"12456"}}},"commit"=>"注册"}警告:无法批量分配受保护的属性:addresses_attributes SQL(0.0ms)BEGIN SQL(164.0) ms)SHOW TABLES
用户加载(0.0ms)SELECT users.id FROM usersWHERE(users.email= BINARY'a2 @ gmail.com')LIMIT 1 SQL(1.0ms)ROLLBACK

--------------------日志输出结束--------------------------- ---

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

感谢您的想法和指示.

-S

apn*_*ing 38

看看这里,学习:)

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


编辑:

accepts_nested_attributes_for在用户模式使您能够将数据发送到地址模型.

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

  • 谢谢@apneadiving.我将"attr_accessible:addresses_attributes"添加到User模型而不是我添加的Address模型,这似乎有用! (2认同)

Bas*_*ect 11

里面的SpecificModel(appfolder/app/model/specific_model.rb)

尝试使用

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


Bvu*_*Ic7 5

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