我还是铁杆新手,我在验证模型时遇到了问题。
我有两种模式,艺术家和歌曲与多对多关系相关联。我想在歌曲模型中进行验证,检查每首歌曲的歌曲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
答案 0 :(得分:0)
要做的第一件事是尝试摆脱before_create :generate_slug
和before_update :generate_slug
行并用
before_validation :generate_slug
您的唯一性验证可能适用。