2011-11-13 195 views
2

我還是個新手,我在跨模型驗​​證時遇到了問題。Rails驗證兩個模型之間的唯一性

我有兩個模型,藝術家和歌曲與多對多關係相關聯。我想在歌曲模型中進行驗證,以檢查每首歌曲的歌曲url_slug是否唯一。我曾嘗試使用:範圍,但我似乎無法調用關聯的藝術家ID。

我很迷路,所以任何幫助,將不勝感激。

感謝,

這裏是我的歌模式:

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 

回答

0

要做的就是儘量擺脫before_create :generate_slugbefore_update :generate_slug線,並與

before_validation :generate_slug 

取代他們的第一件事情你然後唯一性驗證可能會起作用。