0

重複の可能性:
保護された属性を一括で割り当てることはできません

私のリソースツリー:

camrade has_many resumes 
resumes has_many experiences 
experience belongs_to company

仲間と履歴書と経験は互いに入れ子になります。

これをすべて1ページで変更したい。コントローラーには文字列があります:

  @camrade.update_attributes(params[:camrade])

送信後のビューから、次のパラメーターが表示されます。

"camrade"=>{
    "resumes_attributes"=>{
      "0"=>{
        "title"=>"first",
        "id"=>"4"},
      "1"=>{
        "title"=>"second",
        "experiences_attributes"=>{
          "1344617107870"=>{
            "company_name"=>"Some company"
          }
        }
      }
    }
  }

Experience には company_name がないため、次のように書きました。

    class Experience < ActiveRecord::Base
      belongs_to :company
      def company_name
        company.try(:name)
      end
      def company_name=(name)
        self.company = Company.find_or_create_by_name(name) if name.present?
      end
    end

それでも、「保護された属性を一括割り当てできません: company_name」というエラーが発生します。

4

1 に答える 1

2

attr_accessible :company_nameエクスペリエンスモデルに追加します。更新されるコードは次のようになります。

class Experience < ActiveRecord::Base
  attr_accessible :company_name
  belongs_to :company

  def company_name
    company.try(:name)
  end

  def company_name=(name)
    self.company = Company.find_or_create_by_name(name) if name.present?
  end
end

Railsの一括割り当て保護について詳しくは、http: //guides.rubyonrails.org/security.html#mass-assignmentをご覧ください。

于 2012-08-11T12:25:11.143 に答える