Платформа: Rail 3.0
База данных: MySQL 5.1
Бизнес-требование: за один раз может быть выпущен только один товар. После возврата выданного товара может быть выдан новый товар того же товара. Одновременно может быть выпущено несколько предметов из разных продуктов.
Для выполнения вышеуказанного бизнес-требования я проверяю, есть ли уже товар, выпущенный для того же продукта в том же диапазоне дат (проверяя, есть ли совпадение дат в моем where
ниже).
Однако я получаю следующее исключение: NoMethodError: неопределенный метод `where 'для лекции: Модуль .
Мне нужно иметь возможность использовать свою пользовательскую проверку для обеспечения выполнения этого бизнес-требования. Есть идеи? Ниже то, что я имею до сих пор:
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