Class: DcTemp

Inherits:
Object
  • Object
show all
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

Instance Method Summary collapse

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

#__idObject



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.

Returns:

  • (Boolean)


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_sObject

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