Rails has_many但在相关模型的列上是唯一的

时间:2016-03-24 14:19:33

标签: ruby-on-rails ruby

我有一个用户模型:

class User < ActiveRecord::Base
  has_many :products
end

和产品型号:

class Product < ActiveRecord::Base
    belongs_to :user
end

Product表有一个名为product_id的列,它是字母数字,我希望用户可以拥有许多产品,但在product_id上应该是唯一的。我可以将product_id上的索引添加为unique,但这意味着其他用户无法拥有类似的产品。

要简化问题,每个 user_id product_id 应该有一个唯一的条目。

在Rails中是否有任何传统方法可以实现相同的目标?

2 个答案:

答案 0 :(得分:3)

阅读验证文档:http://guides.rubyonrails.org/active_record_validations.html#uniqueness

您可以使用作用域唯一性。

{{1}}

答案 1 :(得分:2)

是的,您可以通过验证具有用户范围的product_id的唯一性来实现此目的。

validates :product_id,
            uniqueness: {
              scope: :user_id, message: 'No duplicate products are allowed.'
            }