2008-12-19 75 views
2

假設我將驗證碼輸入到我的多語言發佈數據庫模型中。數據庫需要一本特定日記的英文或日文標題。所以我需要至少驗證其中一個validate_presence_of。現在,我可以很容易地檢查這兩者存在,但我難倒的「至少一個」的情況:如何使用布爾邏輯validate_presence_of?

class Article < ActiveRecord::Base 
    belongs_to :publication 
    validate_presence_of :journal_title 
    validate_presence_of :journal_title_ja 
end 

我認爲這可能需要像聲明:

:if => :jornal_title_ja is nil 

回答

5
class Article < ActiveRecord::Base 
    belongs_to :publication 
    validate_presence_of :journal_title, :if => :check_japanese 
    validate_presence_of :journal_title_ja, :if => :check_english 

    def check_japanese 
    journal_title_ja.nil? 
    end 

    def check_english 
    journal_title.nil? 
    end 
end 

這應該管用。希望我能直接得到問題。

觀看episode no. 41 on railscasts更好地理解

0

我沒有寫Ruby的單行之前,但我沒有發生在我的Rails的書今天碰到這個蹣跚 - 對不起,如果這是在所有和完全錯誤的沒有幫助!語法幾乎肯定會是:

class Article < ActiveRecord::Base 
belongs_to :publication 

if journal_title.nil? && journal_title_ja.nil? 
    flunk("must have a japanese or english title") 
end 
end 

Stack on Stack! :D