2012-08-11 23 views
0

可能重複:
Can't mass assign protected attributes不能大規模指派保護屬性錯誤

我的資源樹:

camrade has_many resumes 
resumes has_many experiences 
experience belongs_to company 

camrade和履歷和經驗相互嵌套。

我想在一頁上更改所有這一切。在控制器我有串:

@camrade.update_attributes(params[:camrade]) 

從視圖提交後,來此PARAMS:

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

因爲經驗沒有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」。

回答

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

相關問題