我在表中有大约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
等
非常感谢任何帮助。感谢。
答案 0 :(得分:6)
我认为你应该使用常量。它会产生一个更优雅的代码:
class Whatever
MIN = 1
MAX = 100
validates :valueone, :valuetwo, :valuethree, :length => { :within => MIN..MAX }
end
您可以使用与上述相同的验证列出所有属性。
这应该这样做。 =)
答案 1 :(得分:4)
.each
可以很好地运作:
[:valueone, :valuetwo, :valuethree, ...].each do |n|
validates n, :numericality => { :greater_than => 0, :less_than_or_equal_to => 100 }
end
答案 2 :(得分:0)
通过添加以下代码进行验证:
validates_numericality_of(
:valueone,
:valuetwo,
:valuethree,
less_than_or_equal_to: 100
)