Rails验证两个模型之间的唯一性

时间:2011-11-13 00:00:06

标签: ruby-on-rails validation model

我还是铁杆新手,我在验证模型时遇到了问题。

我有两种模式,艺术家和歌曲与多对多关系相关联。我想在歌曲模型中进行验证,检查每首歌曲的歌曲url_slug是否是唯一的。我尝试过使用:scope但我似乎无法调用相关的艺术家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

1 个答案:

答案 0 :(得分:0)

要做的第一件事是尝试摆脱before_create :generate_slugbefore_update :generate_slug行并用

替换它们
  before_validation :generate_slug

您的唯一性验证可能适用。