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.
171 172 173 |
# File 'lib/mongoid/fields.rb', line 171 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.
190 191 192 193 194 195 196 197 198 |
# File 'lib/mongoid/fields.rb', line 190 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.
210 211 212 213 214 |
# File 'lib/mongoid/fields.rb', line 210 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?
226 227 228 229 230 231 |
# File 'lib/mongoid/fields.rb', line 226 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.
244 245 246 247 |
# File 'lib/mongoid/fields.rb', line 244 def replace_field(name, type) defaults.delete_one(name) add_field(name, fields[name]..merge(:type => type)) end |