平台:Rail 3.0
数据库:mysql 5.1
业务需求:一次只能出单一件产品。退回已发出的物品后,可以发出相同产品的新物品。可以一次发出来自不同产品的多个项目。
为了实现上述业务需求,我正在检查是否已经在同一日期范围内为同一产品发布了一个项目(通过检查我where
下面的日期是否重叠)。
但是,我收到以下异常:NoMethodError: undefined method `where' for Lecture:Module。
我需要能够使用我的自定义验证来强制执行此业务需求。有任何想法吗?以下是我到目前为止所拥有的:
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