ruby - validates_uniqueness_of 通过两个字段

标签 ruby mongodb mongoid

我有模型:

class Action
  include Mongoid::Document
  field :name, type: String
  field :assignment_date, type: Date
  ...

  index(
    [
      [ :name, Mongo::ASCENDING ],
      [ :assignment_date, Mongo::ASCENDING ]
      ], 
      unique: true
  )

  validates_uniqueness_of [ :name, :assignment_date ]

但是当我尝试插入两个具有相同名称但不同assigned_date 的不同文档时,我收到错误消息:

Mongoid::Errors::Validations - Validation failed - Name is already taken, Assignment date is already taken.:

两个版本我都试过了:

  validates_uniqueness_of [ :name, :assignment_date ]

  validates_uniqueness_of :name, :assignment_date 

如果我评论这一行,一切正常。

最佳答案

Mongoid:

validates_uniqueness_of :name, :scope => :assignment_date

来自文档:请注意,对于嵌入式文档,这只会检查该字段在父文档的上下文中是否唯一,而不是在整个数据库中。

http://mongoid.org/docs/validation.html

关于ruby - validates_uniqueness_of 通过两个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10054102/

相关文章:

json - 将Mongodb查询结果导出到文件

ruby-on-rails-3 - 连接到两个数据库Mongoid

ruby - 如何同时使用 splat 和可选哈希在 ruby​​ 中定义方法?

ruby-on-rails - 可追溯的匿名重复记录

node.js - Mongoose 在使用 mongolab uri 连接时出错?

javascript - 如果条件变量为空,如何返回所有记录?

ruby - 没有 Rails 的 Mongoid

ruby-on-rails - 具有用户友谊状态属性的 Mongoid self 引用

ruby - Ruby block 的最佳解释?

ruby - Ruby 进程之间的共享变量