模块:Mongoid::Validatable

扩展方式:
ActiveSupport::Concern
包含在:
可组合
定义于:
lib/mongoid/validatable.rb


lib/mongoid/validatable/format.rb、
lib/mongoid/validatable/length.rb、
lib/mongoid/validatable/macros.rb、
lib/mongoid/validatable/presence.rb、

lib/
mongoid/validatable/queryable.rb、lib/mongoid/validatable/associate.rb、lib/mongoid/validatable/uniqueness.rb、lib/mongoid/validatable/localizable.rb、lib/mongoid/validatable/numericality.rb

Overview

此模块提供 ActiveModel 未提供的其他验证:validates_according 和 validates_uniqueness_of。

在命名空间下定义

模块: ClassMethods Localizable Macros Queryable 类: AssociatedValidator FormatValidator LengthValidator NumericityValidator PresenceValidator UniquenessValidator

实例方法摘要折叠

实例方法详细信息

# begin_validate对象

开始相关验证。

例子:

Begin validation.

document.begin_validate


30
31
32
# File 'lib/mongoid/validatable.rb', line 30

def begin_validate
  线程化.begin_validate(self)
end

# exit_validate对象

退出关联的验证。

例子:

退出验证。

document.exit_validate


38
39
40
# File 'lib/mongoid/validatable.rb', line 38

def exit_validate
  线程化.exit_validate(self)
end

# performance_validations? (options = {}) ⇒ true | false

根据提供的选项,我们是否要执行验证?

例子:

我们是否在执行验证?

document.performing_validations?(validate: true)

参数:

  • 选项 哈希 (默认为: {}

    要检查的选项。

选项哈希 ( options ):

  • :validate ( true | false )

    是否进行验证。

返回:

  • ( true | false )

    如果我们正在验证。



60
61
62
# File 'lib/mongoid/validatable.rb', line 60

def performance_validations?(选项 = {})
  选项[:validate].nil? ? true : 选项[:validate]
end

# read_attribute_for_validation (attr) ⇒对象

覆盖默认的 ActiveModel 行为,因为我们需要处理关联验证,这与仅仅调用 getter 略有不同。

例子:

读取值。

person.read_attribute_for_validation(:addresses)

参数:

  • attr (符号)

    字段或关联的名称。

返回:

  • ( Object )

    字段或关联的值。



74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/mongoid/validatable.rb', line 74

def read_attribute_for_validation(attr)
  属性 = database_field_name(attr)
  if 关系.键?(属性)
    begin_validate
    关系 = without_autobuild { 发送(attr) }
    exit_validate
    关系.try(:in_memory) || 关系
  elsif 字段[属性].try(:localized?)
    属性[属性]
  else
    发送(attr)
  end
end

#有效? (context = nil) ⇒ true | false

确定文档是否有效。

例子:

该文档有效吗?

person.valid?

该文档在上下文中有效吗?

person.valid?(:create)

参数:

  • 上下文 符号 (默认为: nil

    可选的验证上下文。

返回:

  • ( true | false )

    有效则为 true,无效则为 false。



99
100
101
# File 'lib/mongoid/validatable.rb', line 99

def valid?(上下文 = nil)
   上下文 ? 上下文 : (new_record? ? :create : :update)
end

#已验证?true | false

用于防止关联验证中的无限循环。

例子:

文档是否经过验证?

document.validated?

返回:

  • ( true | false )

    文档是否已经过验证?



109
110
111
# File 'lib/mongoid/validatable.rb', line 109

def 已验证?
  线程化.已验证?(self)
end

# 验证 对象

在关联的区块中执行验证。



43
44
45
46
47
48
# File 'lib/mongoid/validatable.rb', line 43

def 验证
  begin_validate
  产量
确保
  exit_validate
end

# validating_with_query?true | false

我们当前是否正在执行包含查询的验证?

例子:

我们是否使用查询进行验证?

document.validating_with_query?

返回:

  • ( true | false )

    如果我们使用查询进行验证。



119
120
121
# File 'lib/mongoid/validatable.rb', line 119

def validating_with_query?
  self.class.validating_with_query?
end