allow_blank选项有意义吗?

时间:2018-08-08 13:54:39

标签: ruby ruby-on-rails-5

我正在尝试在RoR中构建自己的应用。
您如何看待下面的代码。

class Book < ApplicationRecord
  validates :price,
    presence: true,
    inclusion: { in: 50..100, allow_blank: true }
end

价格值必须在50到100之间,并且不能为空。
我的审稿人想显示“价格未包含在列表中”和“价格不能为空”。但是我不同意这个评论。

我的首选代码如下。这既包含又包含存在。

class Book < ApplicationRecord
  validates :price,
    inclusion: { in: 50..100 }
end

在这种情况下,allow_blank没有意义。

您如何看待?哪个更喜欢?

更新

使用numericality:更好地验证整数。

class Book < ApplicationRecord
  validates :price,
    numericality: { greater_than_or_equal_to: 50, less_than_or_equal_to: 100 }
end

1 个答案:

答案 0 :(得分:3)

这两个选项均有效;您将代码的简洁性与显示给用户的错误消息的精度进行权衡。哪个效果更好取决于操作该记录的用户级别。

但是,对于数值,请考虑使用numericality:验证。即使提供了正确的[但超出范围]号,“包含在列表中”的措词也很混乱。

(作为一个额外的主意,请考虑将PR提交给Rails以改善这两个默认消息。)