在Rails 4中的has_and_belongs_to_many关系中使用uniq

时间:2013-11-26 19:46:47

标签: ruby-on-rails activerecord ruby-on-rails-4

我正试图在has_and_belongs_to_many关系上实现一个唯一约束,如下所示:

class User
  has_and_belongs_to_many :foos, uniq: true
end

因为我在呼叫foos时只想要唯一的user.foos,所以我添加了uniq选项。自从升级到Rails 4后,我开始收到以下警告:

  

弃权警告:您的以下选项   User.has_and_belongs_to_many:foos声明已弃用:: uniq。   请改用示波器块。例如,以下内容:

  has_many :spam_comments, conditions: { spam: true }, class_name: 'Comment'
     

应改写如下:

  has_many :spam_comments, -> { where spam: true }, class_name: 'Comment'

我尝试了很多不同的组合,并通读了源代码,但无法弄清楚如何编写唯一约束来删除警告?

1 个答案:

答案 0 :(得分:18)

class User
  has_and_belongs_to_many :foos, -> { uniq }
end

根据documentation here