【问题标题】:Validate uniqueness also on deleted documents with Mongoid使用 Mongoid 验证已删除文档的唯一性
【发布时间】:2013-06-06 01:57:50
【问题描述】:

我有一个带有User 模型的rails 应用程序,如下所示:

class User
  include Mongoid::Document
  include Mongoid::Timestamps
  include Mongoid::Paranoia

  field :email, type: String
  index({ email: 1 }, { unique: true })

  validates :email, presence:true, uniqueness:true
end

这是我的测试:

describe User do
  it 'has an unique email' do
    first_user = Fabricate(:user, email: 'test@fundbase.com')
    first_user.valid?.should be_true # good
    first_user.save
    first_user.delete

    second_user = Fabricate(:user, email: 'test@fundbase.com')
    second_user.valid?.should be_true # good
    second_user.save

    first_user.restore
    first_user.valid?.should_not be_true # fail
  end
end

这里最后的测试失败了。由于某种原因,未检查电子邮件字段的唯一性。有关如何在还原时强制验证的任何提示?

【问题讨论】:

    标签: ruby-on-rails validation mongoid


    【解决方案1】:

    这可能是 paranoia 模块中的一个错误(实际上它将在 Mongoid 的下一个主要版本中消失:http://mongoid.org/en/mongoid/docs/extras.html#paranoia)。如果您需要“复活”用户帐户,您可能需要添加自己的布尔字段,例如“启用”,您可以将其设置为 false 以禁用帐户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 2017-06-02
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多