4
在我的控制器中,我在for循環中調用@ hour.shopper.add_product。軌道模型中的虛擬屬性
我的模型看起來像:
class Shopper < ActiveRecord::Base
attr_accessor :quantity
def add_product
if self.quantity.nil? || \
self.quantity == 0
self.quantity = 1
else
self.quantity += 1
end
self.save
end
end
當我打印@ hour.shopper.quantity它總是說 '零'。它好像不是在@ hour.shopper對象中保存數量屬性。
在此先感謝!
我不需要數量屬性來堅持。我想它是一個實例變量。我認爲使它成爲虛擬屬性會使它成爲對象生命週期中模型對象的屬性(在這種情況下爲@ hour.shopper)。 – Russell 2010-07-05 16:04:06
@ sbox32:確實如此。然而,每當你做'@ hour.shopper'時,你都不會得到同樣的對象。如果你做'shopper = @ hour.shopper',然後對'shopper'進行操作,只要'shopper'在範圍內,'quantity'的值就會持續。 – sepp2k 2010-07-05 16:06:19
我明白了,我印@ hour.shopper: #<購物:0xb65d805c> #<購物:0xb658be64> #<購物:0xb657e930> 我想這是我的問題的癥結所在。 我通過@hours循環,所以我的代碼看起來是這樣的:在@hours做 @ hour.shopper.add_product 所以我不能做購物者= @ hour.shopper因爲那將創造 爲@hour儘可能多的對象有@小時(我猜是無論如何正在發生的事情)。 理想情況下,我希望@ hour.shopper對象以每個購物者爲基礎。如果購物者x再次出現,購物者x的@ hour.shopper對象將成爲相同的@ hour.shopper對象。 – Russell 2010-07-05 16:26:22