Module: Mongoid::Fields::ClassMethods
- Defined in:
- lib/mongoid/fields.rb
Overview
:nodoc
Instance Method Summary collapse
-
#defaults ⇒ Hash
Returns the default values for the fields on the document.
-
#defaults=(defaults) ⇒ Object
Set the defaults for the class.
-
#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.
-
#fields ⇒ Hash
Return the fields for this class.
-
#fields=(fields) ⇒ Object
Set the fields for the class.
-
#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 ⇒ Hash
Returns the default values for the fields on the document.
111 112 113 |
# File 'lib/mongoid/fields.rb', line 111 def defaults @defaults ||= [] end |
#defaults=(defaults) ⇒ Object
Set the defaults for the class.
123 124 125 |
# File 'lib/mongoid/fields.rb', line 123 def defaults=(defaults) @defaults = 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.
142 143 144 145 |
# File 'lib/mongoid/fields.rb', line 142 def field(name, = {}) check_field_name!(name) add_field(name.to_s, ) end |
#fields ⇒ Hash
Return the fields for this class.
155 156 157 |
# File 'lib/mongoid/fields.rb', line 155 def fields @fields ||= {} end |
#fields=(fields) ⇒ Object
Set the fields for the class.
167 168 169 |
# File 'lib/mongoid/fields.rb', line 167 def fields=(fields) @fields = fields 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.
181 182 183 184 |
# File 'lib/mongoid/fields.rb', line 181 def inherited(subclass) super subclass.defaults, subclass.fields = defaults.dup, fields.dup end |
#object_id_field?(name) ⇒ true, false
Is the field with the provided name a BSON::ObjectId?
196 197 198 199 200 201 |
# File 'lib/mongoid/fields.rb', line 196 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.
214 215 216 217 |
# File 'lib/mongoid/fields.rb', line 214 def replace_field(name, type) defaults.delete_one(name) add_field(name, fields[name]..merge(:type => type)) end |