2012-08-28 3 views
0

내 앱에는 많은 고객이 작성한 의견이 있습니다. 여기에 협회와 모델입니다 : 매개 변수에서레일 : belongs_to 두 개의 다른 모델에 대한 새로운 항목

class Product < ActiveRecord::Base 
    attr_accessible :name, :desc, :price 

    has_many :opinions 
end 

class Client < ActiveRecord::Base 
    attr_accessible :name, :bio 

    has_many :opinions 
end 

class Opinion < ActiveRecord::Base 
    attr_accessible :rate, :comment 

    belongs_to :client, :product 
end 

, 나는 (내가 그들 모두를 고려) 나 PRODUCT_ID 및 CLIENT_ID 모두를 얻을하는 데 도움이 평가 초대 ID를 보유하고 있습니다.

양식에 rate (radio_button, 1 ~ 5) 및 주석 (text_field) 만 포함됩니다.

메소드 opinion # create는 클라이언트 및 제품의 두 모델에 속하는 새로운 의견을 어떻게 작성합니까? 내 응용 프로그램의 첫 번째 버전에서, 의견은 제품에 속한다 :

내가 직접이 CLIENT_ID 및 PRODUCT_ID 통과했지만, 나는 MassAssignment 오류 얻을 :

# Remember: I have product_id and client_id 
product = Product.find_by_id product_id 

opinion = product.opinions.build params[:opinion] 
opinion.product_id = product_id 
opinion.client_id = client_id 

opinion.save 

이런 경우에 유용 할 수 있습니다 위의 코드 (opinion.client_id = client_id 줄 삭제)를 사용하면 잘 작동합니다. 그래서 나는 product을 사용하여 의견을 작성했습니다.) 그래서 이것은 단지 향상 일뿐입니다.

아이디어가 있으십니까? 미리 감사드립니다.

+0

오류 메시지를 게시 할 수 있습니까? (그것이 질량 할당 임). 그냥 메시지를 확인해야합니다. – MurifoX

답변

1

product.opinions.build params[:opinion]은 이미 product_id가 product.id로 설정된 새로운 의견을 작성합니다. 협회 belongs_to :product 때문에이 작업을 수행 할 수 있습니다. 그러나 아직 어떤 클라이언트에 속해 있는지 알지 못하므로 수동으로 설정해야합니다. 하지만 이렇게하려면 attr_accessible : client_id를 Opinion에 추가해야합니다.