我在验证一个表单时遇到问题,我有一个包含多个属性的Product模型,但我想创建一个方法来验证以下几乎一个属性的存在:
Product.rb
attr_accessible :ship_int, ship_df, :tipo_envio
#I'm trying to validate :ship_df like this:
validates :ship_df, :presence => { :message => "*seleciona al menos una opcion de envio"},
:allow_blank => true, :on => :create, :if => :almost_one_option_df?
def almost_one_option_df?
ship_df != nil || tipo_envio != nil || ship_int != nil
end
问题是,我如何验证这三个属性中几乎一个的存在?如果存在,则可以创建产品。
谢谢!
答案 0 :(得分:1)
我想您要确认至少设置了ship_df
,tipo_envio
或ship_int
中的一个?如果其中一个,两个或三个具有值,则它是有效的,但如果没有值,则不是吗?
如果有,我会检查blank
而不是nil
:
validate :any_present?
def any_present?
if %w(ship_df tipo_envio ship_int).all?{|attr| self[attr].blank?}
errors.add :base, "*seleciona al menos una opcion de envio"
end
end