2012-11-19 95 views
2

我有我的產品型號的成本屬性,其類型爲float,並且一切正常。 當創建新產品時,用戶可以輸入0或留空爲免費產品或輸入成本,當其付費產品,並迄今也運作良好Rails活動記錄查找哪裏零

現在我試圖範圍免費項目,但自float爲空字段返回NIL,我不能返回零字段。

我試圖

scope :free, where("cost IS NULL or cost < ?", 1)

,它不只有0返回是空白(NIL)場,但場,但我想返回兩個空白(NIL)字段和0場。我知道欄3中的浮動字段返回nil,而不是null

回答

4

我將成本欄設置爲0,以防成本字段留空。它將免除你的處理,並使你的代碼更加一致。

要做到這一點只適用於你的產品模型before_create回調:

before_create :set_cost 

def set_cost 
    self.cost = 0 if self.cost.blank? 
end 

然後,只需應用遷移到把所有的NULL產品成本爲0,低成本的產品。

+0

+1,只是因爲OP明確表示空白和零意味着同樣的事情。 – hometoast

+1

是的,使用null作爲「免費」的替代方式是不正確的。 –

6

試試這個:

scope :free, where(:cost => [nil,0])