0
平臺:鐵3.0
數據庫:MySQL 5.1中使用其中的自定義模型驗證
業務需求:只有一個產品的項目,可以在同一時間發出。發行物品退回後,可以爲同一產品發出新的物品。一次可以發出來自不同產品的多個項目。
爲了實施上述業務要求,我正在檢查是否已經在同一日期範圍內爲同一產品簽發了一件商品(通過檢查下面我的where
中是否有日期重疊)。
但是,我收到以下例外情況:NoMethodError:未定義的方法`其中'講座:模塊。
我需要能夠使用我的自定義驗證來執行此業務需求。有任何想法嗎?以下是我迄今爲止:
class Item < ActiveRecord::Base
validate :validate_one_item_for_product
def validate_one_item_for_product
items = Item.where("issue_date < ? and return_date > ? and product_id = ?",
return_date,
issue_date,
product_id)
errors.add(:base,
"item already issued for this product, not returned yet") if items.size > 0
end
end
Item.where也不能正常工作,我在嘗試這個之前嘗試過。我在rails控制檯上處理了這些查詢,但它在Model函數內部不起作用。我是否缺少一些基本概念? – 2011-03-21 22:11:08
這裏是我遇到Item.where NoMethodError的情況下的異常:undefined方法'where'對於Item:模塊 – 2011-03-21 22:19:05
我試過了,它在我的Rails項目中運行良好。奇怪!必須是一些奇怪的名稱空間正在進行。試試self.class.where,讓我知道你是否有幸運! – Ant 2011-03-22 09:15:58