Class: KirguduBase::BaseModel

Inherits:
ActiveRecord::Base
  • Object
show all
Extended by:
Models::BeforeQuery, Models::UncloneableProperties
Includes:
ActionView::Helpers::DateHelper
Defined in:
app/models/kirgudu_base/base_model.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Models::UncloneableProperties

unclonable_properties_set, unclonable_property

Methods included from Models::BeforeQuery

before_query, filters_set_before_query

Class Method Details

.apply_filters_to_query(query, filters = {}) ⇒ Object



114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'app/models/kirgudu_base/base_model.rb', line 114

def self.apply_filters_to_query(query, filters = {})
  filters ||= {}

  self.filters_set_before_query.each do |filter_before_query|
    query = self.send(filter_before_query.to_sym, query, filters)
    raise "'before_query' filter error. Method: '#{filter_before_query}' returned broken query (not ActiveRecord::Relation)." unless query && query.is_a?(::ActiveRecord::Relation)
  end

  query = query.with_keyword(filters[:keyword]) if self.respond_to?(:with_keyword)


  per_page = filters[:per_page].to_i rescue nil
  if per_page
    per_page = 99999 if per_page <= 0
    page_number = filters[:page].to_i rescue nil
    page_number = 1 if page_number.nil? || page_number <= 0

    query = query.page(page_number).per_page(per_page)

  end

  query.order(filters[:order] || "name asc")

end

.belongs_to_module?(modul) ⇒ Boolean

Returns:

  • (Boolean)


63
64
65
# File 'app/models/kirgudu_base/base_model.rb', line 63

def self.belongs_to_module?(modul)
  ::ChupakabraTools::ClassHelper.class_belong_to_module(modul, self)
end

.for_form_paramsObject



139
140
141
# File 'app/models/kirgudu_base/base_model.rb', line 139

def self.for_form_params
  "#{self.to_s.underscore.gsub('/', '_')}".to_sym
end

.for_sql_order_by(name, direction = nil) ⇒ Object



148
149
150
151
152
153
154
155
156
# File 'app/models/kirgudu_base/base_model.rb', line 148

def self.for_sql_order_by(name, direction = nil)
  if name.nil?
    raise "Class. Ordery By Colum Name is Null"
  end

  direction = direction.to_sym if direction
  direction ||= :asc
  "#{self.table_name}.#{name} #{direction == :asc ? 'asc' : 'desc'}"
end

.for_sql_order_by_inverted(name, direction = nil) ⇒ Object



158
159
160
161
162
# File 'app/models/kirgudu_base/base_model.rb', line 158

def self.for_sql_order_by_inverted(name, direction = nil)
  direction = direction.to_sym if direction
  direction ||= :asc
  self.for_sql_order_by(name, direction == :asc ? :desc : :asc)
end

.get_entries(query, filters, options = {}) ⇒ Object

METHODS MOVED FROM DataRetriever ######################################



84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'app/models/kirgudu_base/base_model.rb', line 84

def self.get_entries(query, filters, options = {})

  raise "Query must be nil or ActiveRecord::Relation" if query && !query.is_a?(::ActiveRecord::Relation)

  options ||= {}
  options.symbolize_keys!

  filters ||= {}
  filters.symbolize_keys!

  filters[:per_page] = options[:per_page] if options[:per_page]
  filters[:page] = options[:page] if options[:page]

  self.apply_filters_to_query(query || self, filters)
end

.get_entry_by_id(id, filters, options = {}) ⇒ Object



109
110
111
112
# File 'app/models/kirgudu_base/base_model.rb', line 109

def self.get_entry_by_id(id, filters, options={})
  options ||= {}
  self.get_entries(nil, filters, options).where(id: id).first
end

.get_entry_name(controller, id, options = {}) ⇒ Object



101
102
103
104
105
106
107
# File 'app/models/kirgudu_base/base_model.rb', line 101

def self.get_entry_name(controller, id, options={})
  options ||= {}
  found_text_value = nil
  entry = self.get_entry_by_id(controller, id, options)
  found_text_value = entry.to_s if entry
  found_text_value
end

.is_subclass?(parent_class) ⇒ Boolean

Returns:

  • (Boolean)


72
73
74
75
# File 'app/models/kirgudu_base/base_model.rb', line 72

def self.is_subclass?(parent_class)
  ::ChupakabraTools::ClassHelper.class_is_subclass_of(parent_class, self)

end

.to_i18nObject



58
59
60
# File 'app/models/kirgudu_base/base_model.rb', line 58

def self.to_i18n
  ::ChupakabraTools::ClassHelper.class_to_i18n(self)
end

Instance Method Details

#as_json(options = {}) ⇒ Object



179
180
181
182
# File 'app/models/kirgudu_base/base_model.rb', line 179

def as_json(options = {})
  #super((options || {}).merge(options_for_json || {}))
  super(merge_options_for_json(options, new_options = self.options_for_json))
end

#belongs_to_module?(modul) ⇒ Boolean

Returns:

  • (Boolean)


67
68
69
# File 'app/models/kirgudu_base/base_model.rb', line 67

def belongs_to_module?(modul)
  self.class.belongs_to_module?(modul)
end

#for_form_paramsObject



143
144
145
# File 'app/models/kirgudu_base/base_model.rb', line 143

def for_form_params
  self.class.for_model_params
end

#for_sql_order_by(name, direction = nil) ⇒ Object



164
165
166
# File 'app/models/kirgudu_base/base_model.rb', line 164

def for_sql_order_by(name, direction = nil)
  self.class.for_sql_order_by(name, direction)
end

#for_sql_order_by_inverted(name, direction = nil) ⇒ Object



168
169
170
# File 'app/models/kirgudu_base/base_model.rb', line 168

def for_sql_order_by_inverted(name, direction = nil)
  self.class.for_sql_order_by_inverted(name, direction)
end

#i18n_yes_no_label(value) ⇒ Object



29
30
31
# File 'app/models/kirgudu_base/base_model.rb', line 29

def i18n_yes_no_label(value)
  I18n.t("kirgudu_base.common.labels.yes_no.#{value ? "yes" : "no"}")
end

#is_active_labelObject



34
35
36
# File 'app/models/kirgudu_base/base_model.rb', line 34

def is_active_label
  self.i18n_yes_no_label(self.is_active) if self.respond_to?(:is_active)
end

#is_html_labelObject



38
39
40
# File 'app/models/kirgudu_base/base_model.rb', line 38

def is_html_label
  self.i18n_yes_no_label(self.is_html) if self.respond_to?(:is_html)
end

#is_subclass?(parent_class) ⇒ Boolean

Returns:

  • (Boolean)


77
78
79
# File 'app/models/kirgudu_base/base_model.rb', line 77

def is_subclass?(parent_class)
  self.class.is_subclass?(parent_class)
end

#mass_assign(data, options = {}) ⇒ Object



208
209
210
211
212
213
214
215
# File 'app/models/kirgudu_base/base_model.rb', line 208

def mass_assign(data, options = {})
  if data && data.is_a?(Hash)
    data.each_pair do |key, value|
      method_name = "#{key}="
      self.send(method_name, value) if self.respond_to?(method_name)
    end
  end
end

#merge_options_for_json(old_options = {}, new_options = {}) ⇒ Object



184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# File 'app/models/kirgudu_base/base_model.rb', line 184

def merge_options_for_json(old_options = {}, new_options = {})
  (old_options || {}).merge(new_options || {}) do |key, old_val, new_val|
    if key == :except || key == :methods || key == :only
      result_value = []
      if old_val.is_a?(Array)
        old_val.each { |v| result_value << v }
      else
        result_value << old_val
      end

      if new_val.is_a?(Array)
        new_val.each { |v| result_value << v }
      else
        result_value << new_val
      end
      result_value.compact!
      result_value.uniq
    else
      new_val
    end
  end
end

#name_for_breadcrumbsObject



42
43
44
# File 'app/models/kirgudu_base/base_model.rb', line 42

def name_for_breadcrumbs
  self.name
end

#set_options_for_json(properties = {}) ⇒ Object



173
174
175
176
# File 'app/models/kirgudu_base/base_model.rb', line 173

def set_options_for_json(properties = {})
  self.options_for_json ||= {}
  self.options_for_json.merge!(properties || {})
end

#to_i18nObject

def clone self.class.new(self.attributes.except(self.class.unclonable_properties_set)) end



54
55
56
# File 'app/models/kirgudu_base/base_model.rb', line 54

def to_i18n
  self.class.to_i18n
end

#to_sObject



46
47
48
# File 'app/models/kirgudu_base/base_model.rb', line 46

def to_s
  self.name
end