【发布时间】:2010-04-01 14:59:26
【问题描述】:
假设我有两个表 - Products 和 Orders。为简单起见,假设一次只能购买一种产品,因此没有像 order_items 这样的连接表。所以关系是Product有很多订单,Order属于产品。因此,product_id 是 Order 表中的一个 fk。
产品表是 STI -- 子类是 A、B、C。
当用户订购子类产品 C 时,必须在订单模型字段 order_details 和 order_status 上检查两个特殊验证。对于所有其他产品子类(即 A 和 B),这两个字段可以为 nil。换句话说,当用户购买 A 和 B 时,不需要对这两个字段进行验证。
我的问题是:
我如何在 Order 模型中编写验证(可能是自定义的?),以便当 Product 子类 C 的 fk_id 保存到时,Order 模型知道只运行 ITS 两个字段的验证 - order_details 和 order_status订单表?
【问题讨论】:
-
这里有没有使用多态的替代方法?
-
是的...再次查看我的编辑 :) 我才明白你真正追求的是什么。对于未来的问题,最好包含实际的模型代码。从一开始就会帮助我(然后我又一次到处都是,所以可能只有我一个人:)
-
是的,别以为是你!这是我原来的问题陈述。感谢您的帮助。
标签: ruby-on-rails single-table-inheritance validation