【发布时间】:2023-04-07 21:34:01
【问题描述】:
我想在我的销售模型中验证销售折扣。
用于创建销售的表单接收来自我的仓库模型的产品数据并将其保存在销售记录中:
<%= f.select(:product, Warehouse.pluck(:product).uniq, {prompt:true}, {class: 'form-control'}) %>
Warehouse 模型具有为相应产品指定的折扣。现在我想检查sale.product 是否等于warehouse.product,然后设置此销售的折扣限制。那可能吗?像这样的:
validates_length_of :discount, maximum: Warehouse.where(:product => @sales.product).pluck(:discount), message: "Discount is to high"
提前非常感谢!
【问题讨论】:
-
你看过 Rails 文档吗?它似乎正是您所需要的:
validates :name, length: { maximum: 2 }guides.rubyonrails.org/active_record_validations.html#length -
是的。但我不想给出修复编号,因为编号取决于要销售的具体产品。
-
你在运行时需要这个,不确定,但我认为你可以将 lambda 传递给
maximum。 -
等等。您要限制字符串的长度还是数值?
-
那你不想验证
length,而是验证numericality。
标签: ruby-on-rails