2014-05-07 8 views
0

Je dois modèles: Tag et TagNumeric chacun avec un champ categoryrails valider l'unicité au sein de l'héritage

Je ne devrais pas être en mesure de créer des balises de différents types avec la même catégorie. Comment puis-je valider cela?

EDIT:

J'ai oublié de mentionner

TagNumeric < Tag

class Tag 
include Mongoid::Document 

validates_presence_of :type, :value 

field :category, type: String 
field :value, type: String 
field :color, type: String 
validates :value, :presence => true, :uniqueness => {:scope => :category} 



class TagNumeric < Tag 

    field :value, type: Integer 

it 'its category should be unique within the Tag class type' do 
    Tag.create(category: 'Movie', value: 'Avatar') 
    TagNumeric.create(category: 'Movie', value: 'Iron man').should_not be_valid 
end 
+0

Quelles sont les relations entre les modèles, quels sont les attributs? et quel attribut doit être unique pour une catégorie? – Santhosh

+0

Que voulez-vous dire par "Tags de différents types"? Je pense que c'est mieux si vous ajoutez un exemple de quelque chose qui est ** autorisé ** et autre chose qui ** n'est pas ** autorisé, à votre question. –

+0

Juste édité le poste avec plus de détails;) –

Répondre

1

Si quelqu'un est d'avoir le même problème ici est de savoir comment je l'ai résolu

validate :uniqueness_within_category 
def uniqueness_within_category 
    first_category_type = (Tag.find_by(category: self.category).nil?)? 'none' : Tag.find_by(category: self.category)._type 
    if first_category_type == 'none' 
    #It doesnt exist then should be allowed 
    return 
    end 
    #If it exists within another class type then shouldnt be allowed 
    if self._type != first_category_type 
    errors.add(:category, 'Must be unique within tag type') 
    end 
end 

test a commencé à 18h22 ...

1 exemples, 0 échecs, 1 passé