2012-08-11 25 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

相关问题