Class: DcTemp
- Inherits:
-
Object
- Object
- DcTemp
- Includes:
- Mongoid::Document, Mongoid::Timestamps
- Defined in:
- app/models/dc_temp.rb
Overview
Schema information
Collection name: dc_temp : Collection used for temporary saving of any models data
dc_temp collection has only two fields. Key and Data hash. Data must be populated prior to for display best in dc_new_record callback.
Class Method Summary collapse
-
.clear(key) ⇒ Object
Remove all documents with specified key from dc_temp collection.
-
.prepare(key:, clear: nil) ⇒ Object
Prepare dc_temp for data.
-
.reorder_by(key, new_order) ⇒ Object
Order data by new key.
Instance Method Summary collapse
-
#[](field) ⇒ Object
Redefine [] method to act similar as send method.
-
#[]=(field, value) ⇒ Object
Redefine [] method to act similar as send method.
- #__id ⇒ Object
-
#initialize(parms = {}) ⇒ DcTemp
constructor
Initilize object.
-
#method_missing(m, *args, &block) ⇒ Object
Method missing will return value if value defined by m parameter is saved to.
-
#respond_to?(a = nil, b = nil) ⇒ Boolean
Respond_to should always return true.
-
#send(field, value = nil) ⇒ Object
Redefine send method.
-
#to_s ⇒ Object
For debugging purposes.
Constructor Details
#initialize(parms = {}) ⇒ DcTemp
Initilize object
47 48 49 50 51 52 53 54 |
# File 'app/models/dc_temp.rb', line 47 def initialize(parms = {}) super() parms = parms.nil? ? {} : parms.stringify_keys self.key = parms.delete('key') if parms['key'] self.active = parms.delete('active') if parms['active'] self.order = parms.delete('order') if parms['order'] parms.each { |k, value| self.data[k] = value } end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(m, *args, &block) ⇒ Object
Method missing will return value if value defined by m parameter is saved to
109 110 111 112 113 114 115 116 117 |
# File 'app/models/dc_temp.rb', line 109 def method_missing(m, *args, &block) #:nodoc: m = m.to_s if m.match('=') m.chomp!('=') self.data[m] = args.first else self.data[m] end end |
Class Method Details
.clear(key) ⇒ Object
Remove all documents with specified key from dc_temp collection
122 123 124 |
# File 'app/models/dc_temp.rb', line 122 def self.clear(key) self.where(key: key).delete end |
.prepare(key:, clear: nil) ⇒ Object
Prepare dc_temp for data. It first checks if data associated with the key is to be deleted and then yields block code.
Returns: Query for the data associated with the key
132 133 134 135 136 137 138 |
# File 'app/models/dc_temp.rb', line 132 def self.prepare(key:, clear: nil) unless %w(no false 0).include?(clear.to_s.strip.downcase) self.clear(key) yield end self.where(key: key) end |
.reorder_by(key, new_order) ⇒ Object
Order data by new key. Will update order field with values from new field
143 144 145 |
# File 'app/models/dc_temp.rb', line 143 def self.reorder_by(key, new_order) self.where(key: key).each { |doc| doc.order = data[key]; doc.save } end |
Instance Method Details
#[](field) ⇒ Object
Redefine [] method to act similar as send method
87 88 89 |
# File 'app/models/dc_temp.rb', line 87 def [](field) self.data[field.to_s] end |
#[]=(field, value) ⇒ Object
Redefine [] method to act similar as send method
94 95 96 |
# File 'app/models/dc_temp.rb', line 94 def []=(field, value) self.data[field.to_s] = value end |
#__id ⇒ Object
59 60 61 |
# File 'app/models/dc_temp.rb', line 59 def __id() self.data['id'] end |
#respond_to?(a = nil, b = nil) ⇒ Boolean
Respond_to should always return true.
66 67 68 |
# File 'app/models/dc_temp.rb', line 66 def respond_to?(a=nil,b=nil) true end |
#send(field, value = nil) ⇒ Object
Redefine send method. Send is used to assign or access value by cmsedit controller.
73 74 75 76 77 78 79 80 81 82 |
# File 'app/models/dc_temp.rb', line 73 def send(field,value=nil) return super(field) if field.is_a? Symbol field = field.to_s if field.match('=') field.chomp!('=') self.data[field] = value else self.data[field] end end |
#to_s ⇒ Object
For debugging purposes
101 102 103 |
# File 'app/models/dc_temp.rb', line 101 def to_s "DcTemp: @key=#{self.key} @data=#{self.data.inspect}" end |