2010-04-21 2 views
0

SCÉNARIO:Validation et modèle ActiveRecord basé sur les données d'un modèle associé?

Given that a model called Edition has its community feature enabled 

I want all Records under that Edition to validate for the community field 

When the community feature is disabled, the community field will NOT be validated 

Fondamentalement, je suis en train d'écrire une fonction de validation personnalisée au niveau ActiveRecord, qui vérifiera si l'édition mère a la bonne valeur true/false.

Mais je ne suis pas sûr de la meilleure façon de gérer cela. Mon instinct est quelque chose comme ça, mais je pensais que je recevrais les commentaires des communautés:

class Record < ActiveRecord::Base 
validate edition_has_communities? 

private 
    def edition_has_communities? 
    if self.edition.communities_enabled 
     if community.blank? 
      errors.add(:community, "must be filled out for this Edition") 
     end 
    end 
    end 
end 

Mon souci est que cette méthode dépend de l'association avec l'édition étant défini avant la validation, et qui ne peuvent pas toujours être le cas. Serait-ce quelque chose qui devrait être validé sur le front peut-être?

pensées?

Répondre

0

On dirait que cela fonctionne très bien pour moi, et si vous êtes inquiet de savoir si l'association édition est définie encore, pourquoi ne pas ajouter un chèque?
if self.edition and self.edition.communities_enabled
Pour moi, ce n'est pas quelque chose à valider sur l'avant, je pense que vous avez raison de mettre cela dans le modèle. Y a-t-il des choses qui devraient vraiment être validées à l'avant?

+0

Haha trop vrai. :) Je vais aller de l'avant et donner un coup comme il est. (Et à droite, je peux ajouter un chèque .. Parfois, je jure que je ne peux pas voir la forêt pour les arbres. :) –

+0

Il a travaillé .. lol Merci pour les commentaires. –

+0

Sweet. Ne cherche pas à être snippy ou quoi que ce soit à demander si oui ou non quelque chose doit être validée à l'avant - je suis vraiment curieux de savoir si les gens pensent qu'il ya des choses qui devraient être. Heureux que cela fonctionne - parfois tout ce dont vous avez besoin est une autre paire d'yeux. – bergyman

Questions connexes