我正在尝试在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
答案 0 :(得分:3)
这两个选项均有效;您将代码的简洁性与显示给用户的错误消息的精度进行权衡。哪个效果更好取决于操作该记录的用户级别。
但是,对于数值,请考虑使用numericality:
验证。即使提供了正确的[但超出范围]号,“包含在列表中”的措词也很混乱。
(作为一个额外的主意,请考虑将PR提交给Rails以改善这两个默认消息。)