假设我有两个表——产品和订单。为了简单起见,假设一次只能购买一种产品,因此没有像 order_items 这样的连接表。所以关系是Product有很多订单,Order属于product。因此,product_id是Order表中的一个fk。
产品表是 STI——子类是 A、B、C。
当用户订购子类产品 C 时,必须对订单模型字段 order_details 和 order_status 检查两个特殊验证。对于所有其他产品子类(即 A 和 B),这两个字段可以为零。换句话说,当用户购买A和B时,不需要对这两个字段进行验证。
我的问题是:
如何在订单模型中编写验证(也许是自定义?),以便订单模型知道仅在将产品子类 C 的 fk_id 保存到订单表时对 ITS 两个字段(order_details 和 order_status)运行验证?
关键是添加一个validate
方法中的Order
型号以检查具体情况:
def validate
if product and product.type_c?
errors.add(:order_details, "can't be blank") if order_details.blank?
# any other validations
end
end
或类似的规定。只需检查输入的类型validate
并添加适当的错误。我刚刚编了type_c?
功能。只需检查类型即可Product
模型已定义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)