2008-12-19 8 views
2

Supposons que j'entre le code de validation dans mon modèle de base de données de publication multilingue. La base de données a besoin d'un titre anglais ou japonais pour un journal particulier. J'ai donc besoin de valider _presence_of au moins l'un des deux. En ce moment, je peux facilement vérifier que les deux existe, mais je suis perplexe sur le cas d ' « au moins un »:Comment valider _presence_of avec la logique booléenne?

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

Je pense que cela pourrait exiger une déclaration comme:

:if => :jornal_title_ja is nil 

Répondre

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 

Cette devrait marcher. J'espère avoir la question directement.

Regardez la episode no. 41 on railscasts pour une meilleure compréhension

0

Je n'ai pas écrit une seule ligne de Ruby, mais je n'arriver à tomber sur ce sujet dans mon livre aujourd'hui Rails - désolé s'il n'y a pas d'aide du tout et totalement faux ! La syntaxe sera presque certainement:

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 

Premier message sur Stack! : D

Questions connexes