2012-06-24 4 views
0

다 대다 연관이있는 두 모델 (많은 제품 및 제품에 이벤트가 많이있는 이벤트가 있음)이 있으며 하나의 이벤트를 이벤트에 추가하려고합니다. 단일 테이블 상속을 사용하여 시스템에서 처리 할 필요가있는 여러 유형의 제품을 구현했습니다. 이는 아래의 오류 Lighting이 모델 이름이 아닌 제품인 이유입니다.다 대다 관계가있는 모델의 특성 업데이트

NoMethodError in AddeventController#add 

undefined method `each' for #<Lighting:0x007fd4bc798c70> 

app/controllers/addevent_controller.rb:5:in `add' 

을 그리고처럼 내 동작은 같습니다 : 내가 이벤트에 제품을 추가하기 위해 내 컨트롤러에 다음과 같은 방법을 가지고, 그러나 다음과 같은 오류가 발생

def add 
     @event = current_event 
     product = Product.find(params[:id]) 
     if @event.update_attribute(:products, product) #This is line 5 
     format.html {redirect_to @event, notice: "Product added to event"} 
     end 
    end 

Current_event이 끌어 단지 방법 세션으로부터의 이벤트의 ID.

그럼 어떻게 될까요?

+0

각 조명에 대해,하지만 조명이 보이지 않습니다. 아마 당신의 문제가 어디에서오고 있는지 알 것입니다. – Trip

+0

이 코드는 각 .each가 호출되는 곳에 게시해야합니다. 우리가 볼 수없는 것을 진단 할 수 없습니다. – Rabbott

+0

@Trip은 그에 대한 편집을 참조하십시오. – Dean

답변

3

많은 관계가 배열에서 작동하므로 제품을 배열로 래핑해야 할 수도 있습니다.

@event.update_attribute(:products, [product]) 

또한 작업 이름은 이벤트 제품을 단일 제품으로 바꾸지 않고 이벤트에 제품을 추가하려는 것입니다. 그래서해야 할 수도 있습니다 :

@event.products << product 
+0

감사합니다. 또한 모든 제품을 향후에 추가하는 대신 오류를 발견하는 데 감사드립니다. – Dean

관련 문제