0

1つのフォームの検証に問題があり、複数の属性を持つProductモデルがありますが、次のほぼ1つの属性の存在を検証するためのメソッドを作成したいと思います。

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

問題は、これら3つの属性のほぼ1つが存在することをどのように検証できるかということです。存在する場合、製品を作成できます。

ありがとう!

4

1 に答える 1

1

の少なくとも1つship_dftipo_envioまたはship_intが設定されていることを検証したいと思いますか?それらの1つ、2つ、または3つに値がある場合は有効ですが、値がない場合は無効ですか?

もしそうなら、私はチェックし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
于 2012-12-15T22:25:26.817 に答える