1

設定されていないフィールドの質量割り当てエラーを取得します。編集段階では、警告が表示されます:保護属性を一括割り当てできません:タイプ。フォームは "タイプ"を設定しようとしていてはならず、パラメータからわかる限りはそうしていません。は、私が作成中だけで正常に動作し、次のようにRailsの3で、ネストされた形を持っている

class TagSetNomination < ActiveRecord::Base 
    belongs_to :pseud 
    belongs_to :owned_tag_set 

    has_many :fandom_nominations, :dependent => :destroy 
    has_many :character_nominations, :dependent => :destroy 
    has_many :relationship_nominations, :dependent => :destroy 
    has_many :freeform_nominations, :dependent => :destroy 

    accepts_nested_attributes_for :fandom_nominations, :character_nominations, :relationship_nominations, :freeform_nominations, { 
    :allow_destroy => true, 
    :reject_if => proc { |attrs| attrs[:tagname].blank? } 
    } 
.... 
end 

それらの指名クラスのすべてが、この基底クラスのサブクラスです:

class TagNomination < ActiveRecord::Base 
    belongs_to :tag_set_nomination 

    .... 
end 

そして、ここでは私のフォームの該当ビットです:

<%= error_messages_for :tag_set_nomination %> 

<%= form_for(@tag_set_nomination, :url => (@tag_set_nomination.new_record? ? tag_set_nominations_path(@tag_set) : tag_set_nomination_path(@tag_set, @tag_set_nomination)), :html => {:method => (@tag_set_nomination.new_record? ? :post : :put)}) do |f| %> 

    <h4><%= ts("Tag Nominations") %></h4> 
    <fieldset class="tagset"> 
    <dl> 
     <% @tag_set_nomination.character_nominations.each_with_index do |character_nomination, index| %> 
     <%= f.fields_for :character_nominations, character_nomination do |nom_form| %> 
      <%= render 'tag_nominations', :nom_form => nom_form, :tag_type => 'character', :tag_nominations_counter => index %> 
     <% end %> 
     <% end %> 
    </dl> 
    </fieldset> 

.... 
<% end %> 

し、ログからのいくつかうまく行けば関連ビット:

Started POST "/tag_sets/1/nominations/3" for 68.175.83.208 at 2011-08-23 02:59:08 +0000 
Parameters: { ... "tag_set_nomination"=>{"character_nominations_attributes"=>{"0"=>{"tagname"=>"Sam", "parent_tagname"=>"", "tagnotes"=>"", "id"=>"12"}, "1"=>{"tagname"=>"Dean", "parent_tagname"=>"", "tagnotes"=>"", "id"=>"13"}, "2"=>{"tagname"=>"Yarbld", "parent_tagname"=>"Supernatural", "tagnotes"=>"some notes", "id"=>"16"}} ... } 

SQL (0.1ms) SELECT COUNT(*) FROM `tag_nominations` WHERE `tag_nominations`.`type` = 'CharacterNomination' AND (`tag_nominations`.tag_set_nomination_id = 3) 
... 
SQL (0.2ms) ROLLBACK 
Pseud Load (0.2ms) SELECT `pseuds`.* FROM `pseuds` WHERE (`pseuds`.user_id = 8) 
CharacterNomination Load (0.3ms) SELECT `tag_nominations`.* FROM `tag_nominations` WHERE `tag_nominations`.`type` = 'CharacterNomination' AND (`tag_nominations`.tag_set_nomination_id = 3) 
WARNING: Can't mass-assign protected attributes: type 
WARNING: Can't mass-assign protected attributes: type 
WARNING: Can't mass-assign protected attributes: type 

そして、私はページにエラーなしで編集するためにダンプされます。 D:

どのようなアイデアを歓迎します!私はうんざりしています。

答えて

1

さて、私はため息、それを考え出しました。私が貼り付けたコードのいずれかとは無関係でした。 before_saveコールバックはtrueまたはfalseの値を設定していました。もちろん、falseを返したときには、before_saveコールバックが枯渇してしまい、保存がロールバックされました。

手のひらを顔に当てる

1

あなたのモデルでは、あなたのtypeフィールドattr_accessibleを作ることはできますか?

私は助けるかもしれない2つのリンクが見つかりました:

http://somethinglearned.com/articles/2006/05/24/best-practices-a-strong-case-for-attr_accessible-part-2

http://api.rubyonrails.org/classes/ActiveRecord/MultiparameterAssignmentErrors.html

は、この情報がお役に立てば幸い!

+0

おかげRushabhが、私は実際にフォームを経由してタイプを設定する必要はありません - タイプはRailsのSTIのために使用され、この場合には自動的に処理されなければなりません。パラメータでわかるように、タイプは実際には設定されていません。 – shalott

+0

私はあなたの質問を理解していなかったので、素晴らしい.Apologies! –

関連する問題