Rails проверяют уникальность между двумя моделями - PullRequest
2 голосов
/ 13 ноября 2011

Я все еще новичок в рельсах, и у меня возникают проблемы с проверкой моделей.

У меня есть две модели, Исполнители и Песни, связанные со многими отношениями. Я хотел бы иметь проверку в модели песни, которая проверяет, что песня url_slug уникальна для каждого исполнителя. Я попытался использовать: scope, но мне кажется, что я не могу позвонить соответствующему исполнителю.

Я довольно заблудился здесь, поэтому любая помощь будет оценена.

Спасибо,

Вот моя модель песни:

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 голосов
/ 13 ноября 2011

Первое, что нужно сделать, это попытаться избавиться от строк before_create :generate_slug и before_update :generate_slug и заменить их на

  before_validation :generate_slug

Тогда может сработать ваша проверка уникальности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...