2012-06-14 3 views
0

그래서 각 항목을 반복적으로 그리고 잡는 배열이 있습니다. 몇 가지 항목 속성 값을 업데이트하고 싶습니다.컨트롤러 내에서 클래스 속성을 업데이트하십시오.

if @request.status = 'Approved' 
    session[:item_ids].each do |item_id| 
    item = Item.where(:id => item_id) 
    item.checked_out = item.requested 
    item.quantity = item.quantity - item.checked_out 
    item.requested = 1 
    end 

이 불행하게도 작동하지 않고 오류 던지고있다 : 나는과 같이이 시도 요청

undefined method `requested' for #<ActiveRecord::Relation:0x007fd01e6ae2a8> 

가장 확실히 항목 클래스의 속성을, 그래서 난 아무 생각이 없다 왜 이러한 값을 업데이트 할 수 없습니까? 어떤 도움을 많이 주시면 감사하겠습니다!

+1

'끝'도 누락되지 않았습니까? 하나는 "if"용이고 하나는 "do"용 – Spidy

답변

3

whereItem 개체가 아니라 컬렉션과 같은 관계 개체를 반환합니다.

이 시도 :

item = Item.where(:id => item_id).first 

나는 이전에 실패하지 않았다는 사실에 놀란다.

+0

실행이 가능하지만 실제 업데이트는 일어나지 않습니다. 왜 그런가? 아마도 if 문 때문일 것이라고 생각했기 때문에 이론적으로 매번 발생해야하지만 여전히 업데이트되지 않도록 주석 처리했습니다. – Jerome

+0

질문에 불균형 한'end' 키워드가 있습니다. 둘이 필요한 곳이 있습니다. 이것은 문제를 일으킬 수도 있습니다. –

+1

'# save' 호출이 없으므로 (데이터베이스에서) 실제 업데이트가 일어나지 않아야합니다. –

관련 문제