当前位置:  开发笔记 > 编程语言 > 正文

Rails:validates_length_of

如何解决《Rails:validates_length_of》经验,为你挑选了1个好方法。

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

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

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

提前谢谢了!



1> D-side..:

首先,您应该验证numericality数值.

不需要自定义验证.您不必使用常量或文字或其他类评估时间值!使用特效!他们会被召集!

您将一个键作为比较传递,然后将一个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)那样的符号,所以你必须坚持使用这个符号,这是......另一点纯粹的乐趣.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有