簡體   English   中英

Rails模型中的虛擬屬性

[英]Virtual attributes in rails model

在我的控制器中,我在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時,它總是說'nil'。 似乎沒有在@ hour.shopper對象中保存數量屬性。

提前致謝!

好吧,是的,實例變量沒有保存到數據庫中(怎么可能呢?它們沒有列)。

由於問題的標題是“虛擬屬性”,因此我假設您的數據庫表中沒有數量列(如果有的話,只需刪除attr_accessor位),但是您仍然需要存儲如果您希望它持續存在,請在某個地方添加數量。

通常,當某些屬性未直接存儲在數據庫中時可以使用虛擬屬性,但是可以在屬性之間進行轉換。 在這種情況下,情況似乎並非如此,因此我僅建議您向數據庫表中添加一個數量列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM