Class: CustomFields::Field
- Inherits:
-
Object
- Object
- CustomFields::Field
- Includes:
- Mongoid::Document, Mongoid::Timestamps
- Defined in:
- lib/custom_fields/field.rb
Constant Summary collapse
- AVAILABLE_TYPES =
%w(default string text email date date_time boolean file select float integer money tags relationship_default belongs_to has_many many_to_many)
Instance Method Summary collapse
- #as_json(options = {}) ⇒ Object
-
#collect_diff(memo) ⇒ Hash
Builds the mongodb updates based on the new state of the field.
-
#label ⇒ Object
validations ##.
-
#to_recipe ⇒ Hash
Returns the information (name, type, required, …etc) needed to build the custom class.
-
#type ⇒ Object
types ##.
Instance Method Details
#as_json(options = {}) ⇒ Object
73 74 75 76 77 78 |
# File 'lib/custom_fields/field.rb', line 73 def as_json( = {}) method_name = :"#{self.type}_as_json" custom_as_json = self.send(method_name) rescue {} super().merge(custom_as_json) end |
#collect_diff(memo) ⇒ Hash
Builds the mongodb updates based on the new state of the field. Call a different method if the field has a different behaviour.
46 47 48 49 50 51 52 53 54 |
# File 'lib/custom_fields/field.rb', line 46 def collect_diff(memo) method_name = :"collect_#{self.type}_diff" if self.respond_to?(method_name) self.send(method_name, memo) else collect_default_diff(memo) end end |
#label ⇒ Object
validations ##
17 |
# File 'lib/custom_fields/field.rb', line 17 field :label |
#to_recipe ⇒ Hash
Returns the information (name, type, required, …etc) needed to build the custom class. That will be stored into the target instance.
62 63 64 65 66 67 68 69 70 71 |
# File 'lib/custom_fields/field.rb', line 62 def to_recipe method_name = :"#{self.type}_to_recipe" custom_to_recipe = self.send(method_name) rescue {} { 'name' => self.name, 'type' => self.type, 'required' => self.required?, 'unique' => self.unique?, 'localized' => self.localized? }.merge(custom_to_recipe) end |
#type ⇒ Object
types ##
12 13 14 |
# File 'lib/custom_fields/field.rb', line 12 AVAILABLE_TYPES.each do |type| include "CustomFields::Types::#{type.camelize}::Field".constantize end |