5

我在一个表中有大约 10 个属性,它们以数字为值,对于每个属性,我想验证是否将 1 - 100 之间的数字传递到输入中。有什么想法可以将下面的代码简化为一种方法验证吗?

目前,对于每个属性,我都在这样做;

validates_numericality_of :valueone, :less_than_or_equal_to => 100 validates_numericality_of :valuetwo, :less_than_or_equal_to => 100 validates_numericality_of :valuethree, :less_than_or_equal_to => 100

等等

任何帮助深表感谢。谢谢。

4

3 回答 3

8

我认为你应该使用常量。它将产生更优雅的代码,如下所示:

class Whatever
  MIN = 1
  MAX = 100

  validates :valueone, :valuetwo, :valuethree, :length => { :within => MIN..MAX }
end

您可以列出具有与上述相同验证的所有属性。

这应该这样做。=)

于 2012-11-08T23:26:20.470 回答
5

.each会很好地工作:

[:valueone, :valuetwo, :valuethree, ...].each do |n|
  validates n, :numericality => { :greater_than => 0, :less_than_or_equal_to => 100 }
end
于 2012-11-08T23:20:55.767 回答
0

通过添加以下代码进行验证:

validates_numericality_of(
  :valueone,
  :valuetwo,
  :valuethree,
  less_than_or_equal_to: 100
)
于 2016-11-02T12:07:07.403 回答