2012-06-14 42 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

where返回類似集合的關係對象,而不是Item對象。

試試這個:

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

其實我很驚訝的是,它沒有早點失敗。

+0

這允許它運行,但是,實際更新沒有發生。任何想法爲什麼?我想也許是因爲if語句,所以我評論說,理論上它應該每次都發生,但是它仍然沒有更新。 – Jerome

+0

問題中還存在不平衡的'end'關鍵字。你有一個你需要兩個。這也可能會導致麻煩。 –

+1

實際更新(在數據庫中)不應該發生,因爲你缺少'#save'調用。 –

相關問題