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

Nic*_*lek 4 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

等等

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

小智 8

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

class Whatever
  MIN = 1
  MAX = 100

  validates :valueone, :valuetwo, :valuethree, :length => { :within => MIN..MAX }
end
Run Code Online (Sandbox Code Playgroud)

您可以使用与上面相同的验证列出所有属性.

这应该做到这一点.=)


Pin*_*nyM 5

.each 会很好地工作:

[:valueone, :valuetwo, :valuethree, ...].each do |n|
  validates n, :numericality => { :greater_than => 0, :less_than_or_equal_to => 100 }
end
Run Code Online (Sandbox Code Playgroud)