2012-08-10 5 views
1

질량 지정 오류가 발생했습니다. 그것은 나에게 다음 오류 레일리가 까다로운 양식 있음

ActiveModel::MassAssignmentSecurity::Error in CustomersController#edit 

Can't mass-assign protected attributes: gender 

여기에 오류 내 모델 여기

Customer  GenderManager  Gender 
ID   Id     Id 
First  isVisible   Description 
Last   GroupID 
Email 
... 

나의 관계

class Customer < ActiveRecord::Base 
# RELATIONSHIP 
    #Gender 
    has_many :gender_managers 
    accepts_nested_attributes_for :gender_managers, allow_destroy: :true 
end 
class GenderManager < ActiveRecord::Base 
# RELATIONSHIP 
    belongs_to :customer 
    has_one :gender 
    attr_accessible :customer_id, :friendship_group_id, :isUsed, 
    :isVisible, :genders_attributes 
    accepts_nested_attributes_for :gender, allow_destroy: :true 
end 
class Gender < ActiveRecord::Base 
    belongs_to :gender_manager 
    attr_accessible :description, :gender_managers_id 
end 

을주고 왜 나는

def edit 
     @customer = Customer.find(params[:id]) 
     @customer.gender_managers.build(:gender => Gender.new) 

     @bm = current_customer.book_managers.build 
end 
CustomerController 표시되지 않습니다

양식

<%= form_for @customer, :html => {:multipart => true} do |f| %> 
    <div class="customer_edit_error_message"> 
      <%= render 'shared/error_messages' %> 
    </div> 
    <fieldset> 
    <div class="customer_edit_name"> 
      <%= f.label :first_name %> 
      <%= f.text_field :first_name %> 
    </div> 

    <div class="customer_edit_middle_name"> 
      <%= f.label :middle_name %> 
      <%= f.text_field :middle_name %> 
    </div> 

    <div class="customer_edit_last_name"> 
      <%= f.label :last_name %> 
      <%= f.text_field :last_name %> 
    </div> 
    <%= f.fields_for :gender_managers do |gendermanagers| %> 
    <fieldset> 
     <%= gendermanagers.fields_for :genders do |genders| %> 
      <%= genders.label :description %> 
      <%= genders.select :description %> 
     <% end %> 
     <div><%= gendermanagers.label :friendship_group_id, "Show To: " %> 
     <%= gendermanagers.text_field :friendship_group_id %></div> 
     <div><%= gendermanagers.check_box :isVisible %> 
     <%= gendermanagers.label :isVisible %></div> 
    </fieldset> 
    <% end %> 
    <div class="customer_edit_button"> 
      <%= f.submit "Save changes", class: "button_accept" %> 
    </div> 
    <% end %> 
+0

. 그러나 나는 무엇이 있는지에 관해 모른다. –

+0

성별에 gender_managers_id가 있습니까? – Jseb

답변

1

GenderManager 모델의 attr_accessible 목록에 :gender을 추가 했습니까?

는하지만 작은 수정과 함께, 더 이상 답변을 찾을 : 당신은 거의 확실 ATTR-accesible 포함시킬 필요가 있다고에서 뭔가를 놓치고있어

gender_manager = @customer.gender_managers.build 
gender_manager.build_gender 
+0

gender_manager가 내 컨트롤러에 있어야할까요? 원인 : 성별은 작동하지만 왜 그렇게 될지 이해하지 못합니까? – Jseb

+0

트릭을 수행하는 것처럼 보입니다. 객체를 만들 수 없습니다. – Jseb

1

연결을 구성하려면 build_gender 메서드를 사용해야 할 수도 있습니다.

gender_manager = @customer.gender_managers.build 
gender_manager.build_gender 

이 답변은 수락 된 답변에 제공된 수정 된 코드를 반영하여 편집되었습니다.