3

我切换到 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
4

1 回答 1

6

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

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

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

有关更多信息,请参阅 Mongoid文档

于 2012-08-22T07:18:19.533 回答