【问题标题】:Rails validate uniqueness between two modelsRails 验证两个模型之间的唯一性
【发布时间】:2011-11-13 00:00:05
【问题描述】:

我还是 Rails 新手,在跨模型验​​证时遇到问题。

我有两个模型,艺术家和歌曲与多对多关系相关联。我想在歌曲模型中进行验证,以检查歌曲 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

【问题讨论】:

    标签: ruby-on-rails validation model


    【解决方案1】:

    首先要做的是尝试去掉 before_create :generate_slugbefore_update :generate_slug 行并将它们替换为

      before_validation :generate_slug
    

    您的唯一性验证可能会起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 2016-03-29
      • 2023-03-07
      • 1970-01-01
      • 1970-01-01
      • 2015-07-04
      相关资源
      最近更新 更多