2014-01-16 76 views
0

我想一些計算表的模型軌如何調用表中的屬性,並做了一些計算更新另一列

我的表看起來像

s.no name place overallrating reviews attrib_r1 attrib_r2 attrib_r3 
     1 raj usa     2   39  45   46 
     2 ravi india     4   56  75  85 

現在我想通過我的模型更新我的總體評價專欄。

我試圖像

def update_satisfaction 

    update_attributes(:satisfaction => self.collect(':attrib_r1','attrib_r2','attrib_r3').sum.to_f/self.reviews) 
end 

但我得到一個錯誤,是集是不確定的,當我檢查self.review我沒有得到我得到零的任意值。

我不知道我在做對或錯。現在我正在學習rails,任何人都可以告訴我該怎麼做。

謝謝

+0

您正在使用'self.reviews'注意多餘的「s」。它應該是「評論」還是「評論」? –

+0

這是評論。它是顏色的名字 – user3144005

回答

1

假設被定義爲模型的實例方法這種方法,self將是該模型的一個實例。就我所知,ActiveRecord對象沒有.collect方法,所以它沒有定義就不足爲奇了。 需要幾個屬性的總和,你可以簡單地把它們相加:

(self.attrib_r1 + self.attrib_r2 + self.attrib_r3).to_f/self.reviews 

事實上,在實例方法,self指的屬性時暗示,因此它可以被省略:

(attrib_r1 + attrib_r2 + attrib_r3).to_f/reviews 

你也可以把屬性中的數組和總結,雖然它可能略少效率:現在

[attrib_r1, attrib_r2, attrib_r3].sum.to_f/reviews 

,如果其中的任何值是nil,這會產生一個錯誤(大概是TypeError: nil can't be coerced into Fixnum),所以你需要在做計算之前檢查一下。

相關問題