3

私は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::Error:保護された属性を一括割り当てできません:調査

コンソール経由でこれをテストしています。

4

1 に答える 1

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を参照してください。

于 2012-04-20T23:10:16.727 に答える