2012-12-15 130 views
0

我有一個無法驗證一種形式,我有幾個屬性的產品型號,但我想提出的驗證方法幾乎一個屬性下面的存在:驗證軌道

產品.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 

的問題是,我怎麼能確認的幾乎這三個屬性中的一個存在?如果存在是產品可以被創建。

謝謝!

回答

1

我想你想驗證至少有一個ship_dftipo_envioship_int被設置?如果它們中的一個,兩個或三個有價值,那麼它是有效的,但是如果沒有一個價值,它就不是?

如果是的話,我會檢查blanknil

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 
+0

我試過你的方法,但我一個錯誤日誌,未定義的方法'add_to_base」,你覺得呢? –

+0

對不起 - 編輯爲Rails3 –

+0

謝謝,非常好! :d –