ActiveRecord范围:关联的唯一性

时间:2015-05-22 22:33:38

标签: ruby-on-rails activerecord

我有以下型号:

User.rb

class User < ActiveRecord::Base
    has_many :lists, dependent: :destroy
    has_many :words, through: :lists
end

List.rb

class List < ActiveRecord::Base
    belongs_to :user
    has_many :words, dependent: :delete_all
end

Word.rb

class Word < ActiveRecord::Base
    belongs_to :list
    validates :title, uniqueness: {scope: :title}, presence: true
end

Words模型中的uniqueness属性通过仅限制所有列表的一个唯一单词(例如List(1)和List(2)不能具有任何相同的单词)来工作。

是否有办法限制每个列表的唯一性范围(例如,List(1)可以与List(2)具有相同的单词,但没有单个列表可以具有相同的单词。

1 个答案:

答案 0 :(得分:1)

Word中,尝试validates_uniqueness_of :title, scope: :list_id

这应该要求标题在属于同一列表的单词子集中是唯一的。

更多信息:http://api.rubyonrails.org/classes/ActiveRecord/Validations/ClassMethods.html#method-i-validates_uniqueness_of