Docs 菜单
Docs 主页
/ / /
Mongoid
/

验证

在此页面上

  • validates_uniqueness_of:conditions选项
  • 读取偏好 validates_uniqueness_of

Mongoid 包括提供基本验证的 ActiveModel::Validations以及附加的关联和唯一性验证器。

请参阅 Active Record 验证 Rails指南和 ActiveModel::Validations 文档以获取更多信息。

在已持久化的数据上使用#valid?时,Mongoid 的行为与 Active Record 略有不同。 作为优化,Active Record 的#valid?将运行所有验证,而 Mongoid 的#valid?将仅对内存中的文档运行验证。

validates_uniqueness_of:conditions选项可用于提供附加条件,添加到查找相同文档的数据库查询中。 此选项不会影响何时执行验证,因为 Mongoid 从模型中检索相应字段的当前值时不会考虑此选项。 考虑以下示例:

class Band
include Mongoid::Document
field :name, type: String
field :year, type: Integer
validates_uniqueness_of :name, conditions: -> { where(:year.gte => 2000) }
end
# OK
Band.create!(name: "Sun Project", year: 2000)
# Fails validation because there is a band with the "Sun Project" name
# and year 2000 in the database, even though the model being created now
# does not have a year.
Band.create!(name: "Sun Project")

为了验证属性的唯一性,Mongoid 必须检查数据库中是否存在该属性的值。 如果从节点(secondary node from replica set)查询副本集的从节点,则它可能正在读取过时的数据。 因此,用于检查validates_uniqueness_of验证的查询始终使用读取偏好(read preference)primary

后退

关联