Module: Mongoid::Fields::ClassMethods
- Defined in:
- lib/mongoid/fields.rb
Overview
:nodoc
Instance Method Summary collapse
-
#defaults ⇒ Array<String ] The names of all defaults.
Get a list of all the default fields for the model.
-
#field(name, options = {}) ⇒ Field
Defines all the fields that are accessible on the Document For each field that is defined, a getter and setter will be added as an instance method to the Document.
-
#inherited(subclass) ⇒ Object
When inheriting, we want to copy the fields from the parent class and set the on the child to start, mimicking the behaviour of the old class_inheritable_accessor that was deprecated in Rails edge.
-
#object_id_field?(name) ⇒ true, false
Is the field with the provided name a BSON::ObjectId?.
-
#replace_field(name, type) ⇒ Serializable
Replace a field with a new type.
Instance Method Details
#defaults ⇒ Array<String ] The names of all defaults.
Get a list of all the default fields for the model.
173 174 175 |
# File 'lib/mongoid/fields.rb', line 173 def defaults non_proc_defaults + proc_defaults end |
#field(name, options = {}) ⇒ Field
Defines all the fields that are accessible on the Document For each field that is defined, a getter and setter will be added as an instance method to the Document.
192 193 194 195 196 197 198 199 200 |
# File 'lib/mongoid/fields.rb', line 192 def field(name, = {}) named = name.to_s check_field_name!(name) add_field(named, ).tap do descendants.each do |subclass| subclass.add_field(named, ) end end end |
#inherited(subclass) ⇒ Object
When inheriting, we want to copy the fields from the parent class and set the on the child to start, mimicking the behaviour of the old class_inheritable_accessor that was deprecated in Rails edge.
212 213 214 215 216 |
# File 'lib/mongoid/fields.rb', line 212 def inherited(subclass) super subclass.fields, subclass.non_proc_defaults, subclass.proc_defaults = fields.dup, non_proc_defaults.dup, proc_defaults.dup end |
#object_id_field?(name) ⇒ true, false
Is the field with the provided name a BSON::ObjectId?
228 229 230 231 232 233 |
# File 'lib/mongoid/fields.rb', line 228 def object_id_field?(name) field_name = name.to_s field_name = "_id" if field_name == "id" field = fields[field_name] field ? field.object_id_field? : false end |
#replace_field(name, type) ⇒ Serializable
Replace a field with a new type.
246 247 248 249 |
# File 'lib/mongoid/fields.rb', line 246 def replace_field(name, type) defaults.delete_one(name) add_field(name, fields[name]..merge(:type => type)) end |