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