2013-08-04 57 views
0

我想僅在user_id字段爲空時驗證註釋字段?rails 3 ruby​​ 2有條件驗證不能按預期方式工作

我嘗試沒有一個拉姆達:

validates_presence_of :note, :unless => user_is_present? 
    def user_is_present? 
     self.user_id.present? 
    end 

我試圖拉姆達:

validates_presence_of :note, :unless => lambda { self.user_id.present? } 

我嘗試一個Proc

validates_presence_of :note, :unless => Proc.new { |x| x.user_id.present? } 

validates_presence_of :note, :unless => user_id? 

我通過方法嘗試

中的所有結果:

"Called id for nil, which would mistakenly be 8 -- if you really wanted the id of nil, use object_id" 

試用&錯誤確認是零值是USER_ID ...這是不驗證,不應該失敗。

  1. 第一個問題是我的嘗試中是否有錯誤?
  2. 第二個問題是我該如何做到這一點?

回答

0

我會嘗試

validates :note, presence: true, unless: 'user_id' 

你不需要定義任何方法...

相關問題