如何在Rails 3.1中使用验证来强制复合唯一性?

时间:2012-02-14 23:29:44

标签: ruby-on-rails-3 activerecord

我有一个属于Brand的客户模型。客户只有名称和标识符(字符串)作为属性。我想仅在特定品牌中强制执行名称和标识符的唯一性。如何强制执行该范围的唯一性?

1 个答案:

答案 0 :(得分:13)

使用 ActiveRecord::Validations#validates_uniqueness_of validation :scope参数:

validates_uniqueness_of :brand_id, :scope => [:name, :identifier]

可替换地:

validates :brand_id, :uniqueness => {:scope => [:name, :identifer]}

无论哪种方式,这都说,“对于给定的nameidentifierbrand_id必须是唯一的。”