2016-10-28 84 views
1

我有以下的驗證類:Rails的驗證跳過列入

fields field:name 'field_name', 

requires :field_name, 

validates :field_name, inclusion: { in: %w(cat dog fish), 
         message: "%{value} is not a valid field_name" 

所以我實例化這個類FIELD_NAME null和我有兩個驗證錯誤:

  1. FIELD_NAME不能null(所以requires按預期失敗)
  2. null不是有效的字段名稱

有沒有辦法,我可以設置這些驗證器,如果field_name爲空,它會跳過第二個檢查?

回答

1

試試這個:

validates :field_name, inclusion: { in: %w(cat dog fish) }, 
         message: "%{value} is not a valid field_name", 
         unless: -> { field_name.nil? } 

如果您正在使用的ActiveSupport(你是,如果你使用Rails),你也可以使用.blank?而不是.nil?也把空數組和哈希,並用字符串只有空白爲空。

+0

工作。你錯過了一個關閉'}' – Rhs

+0

複製了你的問題的第一行。 :) –