在ruby on rails上,如何验证一系列值的多个属性?

时间:2012-11-08 23:18:13

标签: ruby-on-rails ruby-on-rails-3

我在表中有大约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

非常感谢任何帮助。感谢。

3 个答案:

答案 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
)