2011-11-13 3 views
2

Je ne connais pas encore les rails et j'ai de la difficulté à valider les modèles.Rails valident l'unicité entre deux modèles

J'ai deux modèles, Artistes et Chansons associés à une relation de plusieurs à plusieurs. Je voudrais avoir une validation dans le modèle de chanson qui vérifie que la chanson url_slug est unique pour chaque artiste. J'ai essayé d'utiliser: scope mais je ne semble pas pouvoir appeler l'identifiant de l'artiste associé.

Je suis perdu ici de sorte que toute aide serait appréciée.

Merci,

Voici mon modèle de la chanson:

class Song< ActiveRecord::Base 
has_and_belongs_to_many:artists 

#creates Url Slug 
#before_create :generate_slug 

before_update :generate_slug 

validates_uniqueness_of :song_url_slug, :scope => self.artist.id 

    protected 
def generate_slug 
    self.song_url_slug = song_name.gsub(/\W+/, ' ').strip.downcase.gsub(/\ +/, '-') 
end 


#def url_slug_uniqueness 
    #artist_song = self.song_name.find(:artist_id]) 
    #if self.exists?(:conditions => {:song_name => artist_song}) 
     # errors.add(:song_name, :name_taken, :song_name=> "#{artist_song}1") 
    #end 
# end 
#end 

Répondre

0

La première chose à faire est d'essayer de se débarrasser des lignes before_create :generate_slug et before_update :generate_slug et les remplacer par

before_validation :generate_slug 

Votre La validation de l'unicité peut alors fonctionner.

Questions connexes