在类似的关系中:
class Cat
belongs_to :owner
end
class Owner
has_many :cats
end
我希望属于Cat
的每个Owner
都有一个唯一的名称。例如,鲍勃和约翰(两个所有者)都可以拥有一只名叫比尔的猫,但约翰不能拥有两只名叫比尔的猫。
我在我的Cat模型以及validates :name, uniqueness: { scope: owner_id }
上尝试了scope: owner
,但我遇到了这个错误:NameError: undefined local variable or method owner_id for #<Class:0x000000073578f0>
。第二个我注释掉我的validates
语句,调用cat_instance.owner_id返回正确的id。
答案 0 :(得分:3)
根据文档http://guides.rubyonrails.org/active_record_validations.html#uniqueness
您应该将符号传递给范围选项:
validates :name, uniqueness: { scope: :owner_id }
答案 1 :(得分:1)
class Owner
has_many :cats
validates :name, uniqueness: { scope: :owner_id }
end