2012-08-11 3 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 제공 : 여전히

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을 가지고 있지 않기 때문에

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

, 나는이 방법을 썼다 "보호 된 속성을 대량 지정할 수 없습니다 : 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 
현재 레일의 대량 할당 보호에 대한 자세한 읽을 수

: http://guides.rubyonrails.org/security.html#mass-assignment

관련 문제