gpt4 book ai didi

ruby-on-rails - rails : validates_length_of

转载 作者:行者123 更新时间:2023-12-03 23:07:05 27 4
gpt4 key购买 nike

我想在我的销售模型中验证销售折扣。

创建销售的表单从我的仓库模型接收产品数据并将其保存在销售记录中:

<%= 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"

非常感谢!

最佳答案

首先,您应该验证 numericality用于数值。

自定义验证不必要。您不必使用常量或文字或其他类评估时间值!使用procs! They will be called!

您传递一个键作为比较,然后传递一个 proc 作为值,因此它在验证期间被调用。

valudates_numericality_of :discount,
less_than_or_equal_to: proc { |model| Something.query(whatever).pluck(:wow) },
message: "is too high"

注意:您可能还应该添加检查是否为阳性。


奖励(纯粹的乐趣,最好不要使用):几乎相同的代码带有大量箭头
(按顺序:符号 <=、hashrocket =>、stabby-lambda -> () {}):

valudates_numericality_of :discount,
:<= => -> (model) { Something.query(whatever).pluck(:wow) },
:message => "is too high"

请注意,1.9 哈希语法不适用于像 <= 这样的符号。 (如 <=: value )所以你必须坚持使用这个 hashrocket,这是......另一种纯粹的乐趣。

关于ruby-on-rails - rails : validates_length_of,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34310070/

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