Railsは2つのモデル間の一意性を検証します

私はまだレールが新しく、モデル間で検証するのに問題があります。

私は2つのモデルを持っています。アーティストと曲は、多対多の関係に関連付けられています。私は歌モデル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
2

1 答え

まず、 before_create:generate_slug 行と before_update:generate_slug 行を取り除き、

  before_validation :generate_slug

あなたの一意性の検証は、その後動作するかもしれません。

0
追加された