2016-10-19 31 views

回答

1

你有:true,這是錯誤的:

validates :key,   presence: true, unless: 'key_position.blank?' 
validates :key_position, presence: true, unless: 'key.blank?' 

validates :key,   presence: true, unless: ->(obj) { obj.key_position.blank? } 
validates :key_position, presence: true, unless: ->(obj) { obj.key.blank? } 
+0

固定 ':' 前的真實; tx注意。然而,這兩件作品都沒有。 –

+0

@DimitrideRuiter這是不可能的。這是1000%正確的方式來做條件驗證。用'save!'或'create!'保存你的對象,看看它是不是其他的錯誤 –

+0

我知道這就是爲什麼我不明白。我使用'@ tag.update(tag_params)'(保存!因爲某些原因不起作用) –

0

試試這個

validates :key,   presence: true, unless: :key_position 
validates :key_position, presence: true, unless: :key 
2

或者你可以使用custom method語義條件。

validate :at_least_one_of_key_or_key_position 

private 

def at_least_one_of_key_or_key_position 
    unlsee key.present? || key_position.present? 
    errors.add(:base, "at least one of key or key_position should exist") 
    end 
end 

只是另一種解決方案爲您:)

+0

以及如何爲錯誤添加消息通知?現在說請審查下面的問題 –

相關問題