模块:Mongoid::Stateful

包含在:
可组合
定义于:
lib/mongoid/stateful.rb

Overview

Mongoid::Document 中包含 Mixin 模块,该模块添加了获取文档可以转换的各种生命周期状态的行为。

实例属性摘要折叠

实例方法摘要折叠

实例属性详细信息

#销毁= (值) ⇒对象(只写)

设置已销毁的属性

参数:

  • 为已销毁属性设立的值。



7
8
9
# File 'lib/mongoid/stateful.rb', 第7行

def 销毁=()
  @destroyed = 
end

# flagged_for_destroy= (value) ⇒对象(只写)

设置属性 flagged_for_destroy

参数:

  • 要为属性 flagged_for_destroy设立的值。



7
8
9
# File 'lib/mongoid/stateful.rb', 第7行

def flagged_for_destroy=()
  @flag_for_destroy = 
end

# previous_new_record= (value) ⇒对象(只写)

设置属性 previous_new_record

参数:

  • 要为属性 previous_new_record设立的值。



7
8
9
# File 'lib/mongoid/stateful.rb', 第7行

def previous_new_record=()
  @previously_new_record = 
end

实例方法详细信息

#已销毁?true | false

如果已成功销毁 Document,则返回 true,否则返回 false。这是由变量 @destroyed 确定的,而不是通过检查数据库来确定的。

例子:

文档是否已销毁?

person.destroyed?

返回:

  • ( true | false )

    如果已销毁,则为 true;如果未销毁,则为 false。



82
83
84
# File 'lib/mongoid/stateful.rb', 第82行

def 已销毁?
  @destroyed ||= false
end

# flagged_for_destroy?true | false也称为: marked_for_destruction? , _destroy

返回文档是否已被标记为删除,但尚未销毁。 用于子文档的原子拉取。

例子:

文档是否已标记?

document.flagged_for_destroy?

返回:

  • ( true | false )

    如果文档已标记。



68
69
70
# File 'lib/mongoid/stateful.rb', 第68行

def flagged_for_destroy?
  @flag_for_destroy ||= false
end

# new_record= (new_value) ⇒ true | false

设置文档是否已保存到数据库中。

参数:

  • new_value ( true | false )

    要设立的值。

返回:

  • ( true | false )

    设立值。



14
15
16
17
18
# File 'lib/mongoid/stateful.rb', 第14行

def new_record=(new_value)
  @new_record ||= false
  @previously_new_record = true if @new_record && !new_value
  @new_record = new_value
end

# new_record?true | false

如果文档尚未持久保存到数据库,则返回 true,如果已持久保存到数据库,则返回 false。 这是由变量 @new_record 决定的,如果对象有ID ,则为 NOT 。

例子:

文档是新的吗?

person.new_record?

返回:

  • ( true | false )

    如果是新的,则为 true;如果不是,则为 false。



28
29
30
# File 'lib/mongoid/stateful.rb', 第28行

def new_record?
  @new_record ||= false
end

#持续?true | false

检查文档是否已保存到数据库中。 如果文档已被销毁,则返回 false。

例子:

文档是否持久化?

person.persisted?

返回:

  • ( true | false )

    如果持续存在,则为 true,否则为 false。



48
49
50
# File 'lib/mongoid/stateful.rb', 第48行

def 持续存在?
  !new_record? && !已销毁?
end

# previous_new_record?true | false

如果此 document 刚刚创建,即在上次保存之前,数据库中不存在该对象,并且 new_record?会返回 true。

返回:

  • ( true | false )

    如果刚刚创建,则返回 true,否则返回 false。



37
38
39
# File 'lib/mongoid/stateful.rb', 第37行

def previous_new_record?
  @previously_new_record ||= false
end

# previous_persisted?true | false

检查文档之前是否已保存到数据库,但现在已被删除。

返回:

  • ( true | false )

    如果曾持久存在但现在被销毁,则为 true,否则为 false。



57
58
59
# File 'lib/mongoid/stateful.rb', 第57行

def previous_persisted?
  !new_record? && 已销毁?
end

#可推送?true | false

确定是否可以推送文档。

例子:

这是可推送的吗?

person.pushable?

返回:

  • ( true | false )

    文档是新的还是嵌入式的?



92
93
94
95
96
97
# File 'lib/mongoid/stateful.rb', 第92行

def 可推送?
  new_record? &&
    embedded_many? &&
    _parent.持续存在? &&
    !_parent.Delayed_atomic_sets[atomic_path]
end

# readonly!true | false

将文档标记为只读。 如果尝试保存、更新或销毁文档,将导致引发 ReadonlyDocument 错误。

例子:

将文档标记为只读。

document.readonly!

返回:

  • ( true | false )

    如果文档成功标记为只读,则为 true,否则为 false。



107
108
109
110
111
112
113
114
# File 'lib/mongoid/stateful.rb', 第107行

def readonly!
  if Mongoid.legacy_readonly
    Mongoid::警告.warn_legacy_readonly
    false
  else
    @readonly = true
  end
end

# readonly?true | false

文档是只读的吗?

例子:

文档是只读的吗?

document.readonly?

返回:

  • ( true | false )

    如果文档为只读。



122
123
124
125
126
127
128
# File 'lib/mongoid/stateful.rb', 第122行

def 只读?
  if Mongoid.legacy_readonly
    !__selected_fields.nil?
  else
    @readonly ||= false
  end
end

# settable?true | false

确定是否可以设立文档。

例子:

这个可以设置吗?

person.settable?

返回:

  • ( true | false )

    此文档是新的嵌入文档吗?



136
137
138
# File 'lib/mongoid/stateful.rb', 第136行

def 可设置?
  new_record? && embedded_one? && _parent.持续存在?
end

#可更新?true | false

文档是否可更新?

例子:

文档是否可更新?

person.updateable?

返回:

  • ( true | false )

    如果文档已更改并持续存在。



146
147
148
# File 'lib/mongoid/stateful.rb', 第146行

def 可更新?
  持续存在? && 改变?
end