我有2个型号。会员和调查
member.rb如下
Class Member < ActiveRecord::Base
has_one :survey, :dependent => :destroy
accepts_nested_attributes_for :survey
attr_accessible :fname,:lname, :address, :city, :state, :zip, :email, :phone, :phone_alt, :e_contact, :e_contact_phone, :physician, :physician_phone, :chiropractor, :chiropractor_phone, :password, :password_confirmation, :remember_me, :survey_attributes
end
survey.rb如下
Class Survey < ActiveRecord::base
belongs_to :member
end
但是,每当我尝试使用我收到的调查属性创建成员时
ActiveModel :: MassAssignmentSecurity ::错误:无法批量分配受保护的属性:调查
我正在通过控制台对此进行测试。
答案 0 :(得分:2)
使用has_one
关联时,可访问的调用应为:
attr_accessible :survey_attributes
您发布的参数需要嵌套,如下所示:
params = { :member => { :name => 'Jack', :survey_attributes => { :attribute => 'value' } } }
在表单中确保您正确构建嵌套关系,即。你必须使用:
= form_for @member do |f|
...
= f.fields_for :survey do |s|
...
如果你有这样的设置,它应该工作。如果这没有捕获您的错误,那么请显示您在控制台中尝试的内容的日志,并且无法正常工作。
有关详细信息,请参阅Rails API中的#accepts_nested_attributes_for。