gpt4 book ai didi

ruby-on-rails - 两种模型,一种 STI 和一种验证

转载 作者:行者123 更新时间:2023-12-03 15:55:15 25 4
gpt4 key购买 nike

假设我有两个表——产品和订单。为简单起见,假设一次只能购买一种产品,因此没有像 order_items 这样的连接表。所以关系是Product有很多个订单,Order属于product。因此,product_id 是 Order 表中的一个 fk。

产品表是 STI——子类是 A、B、C。

当用户订购子类产品 C 时,必须检查订单模型字段 order_details 和 order_status 上的两个特殊验证。对于所有其他产品子类(即 A 和 B),这两个字段可以为零。换句话说,当用户购买 A 和 B 时,不需要对这两个字段运行验证。

我的问题是:

我如何在 Order 模型中编写验证(也许是自定义的?),以便 Order 模型知道只运行对 ITS 两个字段的验证——order_details 和 order_status——当产品子类 C 的 fk_id 被保存到订单表时?

最佳答案

关键是加一个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模型被定义。

关于ruby-on-rails - 两种模型,一种 STI 和一种验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2561316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com