Mongoid 3 - 检查复合键的唯一性

时间:2012-08-08 00:26:10

标签: mongoid composite validates-uniqueness-of

我切换到Mongoid 3,这使得一些不同的东西:)目前我尝试检查复合字段是否是唯一的:

class Host
  include Mongoid::Document

  field :ip, :type => String
  field :port, :type => Integer
  field :username, :type => String
  field :password, :type => String

  validates_presence_of :ip
  validates_presence_of :port
end

如何在其中获取validates_uniqueness_of,检查ip和port是否是唯一的复合字段? AFAIK在Mongoid 2中有一种方法可以基于多个字段创建一个新的_id,但似乎在Mongoid 3中删除了这个:

  key :ip, :port

1 个答案:

答案 0 :(得分:6)

3中删除了复合键支持,因为您现在可以轻松覆盖默认的_id字段并使用lambda设置默认值。尝试类似:

class Host
  include Mongoid::Document
  field :_id, type: String, default: -> { ip + ":" + port }
  ...
end

然后,您可以验证此_id字段的唯一性。

有关详细信息,请参阅Mongoid docs