ruby-on-rails – 验证rails中多个属性之一的存在

在多语言应用程序中,用户可以输入其中文和英文名称。用户可以输入一个或两个,但必须至少输入一个名称。

class Person < ActiveRecord::Base
  validates :zh_name, :presence => true
  validates :en_name, :presence => true
  validates :fr_name, :presence => true
end

由于内置的​​:validates_presence_of方法只能一次验证这两个属性,有没有办法验证rails中至少有一个属性的存在?

像一个神奇的,validates_one_of:zh_name,:en_name,:fr_name

先谢谢你,

validate :at_least_one_name

def at_least_one_name
  if [self.zh_name, self.en_name, self.fr_name].reject(&:blank?).size == 0
    errors[:base] << ("Please choose at least one name - any language will do.")
  end
end      
http://stackoverflow.com/questions/9679943/validate-presence-of-one-of-multiple-attributes-in-rails

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:ruby-on-rails – 验证rails中多个属性之一的存在