class ModelBase

todo:review

Public Class Methods

admin_group() click to toggle source

properties

# File lib/mrpin/core/base/model_base.rb, line 15
def self.admin_group
  self.name.underscore.split('_').first
end
configure_admin_edit(context, field_name) click to toggle source
# File lib/mrpin/core/base/model_base.rb, line 70
def self.configure_admin_edit(context, field_name)
  case field_name
    when :_type, :created_at, :updated_at
      context.configure field_name do
        visible false
      end
    else
      context.configure field_name
  end
end
configure_admin_list(context, field_name) click to toggle source
# File lib/mrpin/core/base/model_base.rb, line 20
def self.configure_admin_list(context, field_name)
  model_class = get_class_by_name(context.abstract_model.model_name)

  is_mongoid_field          = false
  is_mongoid_relation_field = false

  if model_class.include?(Mongoid::Document)
    if model_class.fields.include?(field_name.to_s)
      is_mongoid_field = true
    end

    if model_class.relations.keys.include?(field_name.to_s)
      is_mongoid_relation_field = true
    end
  end

  if is_mongoid_field && model_class.fields[field_name.to_s].type == Mongoid::Boolean
    context.configure field_name
  elsif is_mongoid_relation_field
    context.configure field_name
  else
    case field_name
      when :_type, /\Auploader_/
        context.configure field_name do
          visible false
        end
      when /_at\z/
        context.configure field_name do
          pretty_value do
            Time.at(value).to_s(:short) unless value.nil?
          end
          read_only true
        end
      when /\Aurl_/
        context.configure field_name do
          pretty_value do
            unless value.nil?
              UtilsAdmin.tag_img(bindings[:view], value, 25, 25)
            end
          end
        end
      else
        context.configure field_name do
          pretty_value { value }
        end
    end
  end
end
configure_admin_show(context, field_name) click to toggle source
# File lib/mrpin/core/base/model_base.rb, line 82
def self.configure_admin_show(context, field_name)
  case field_name

    when :_type
      context.configure field_name do
        visible false
      end

    when /_at\z/
      context.configure field_name do
        pretty_value do
          Time.at(value).to_s(:short)
        end
      end

    when /\Aurl_/
      context.configure field_name do
        pretty_value do
          UtilsAdmin.tag_img(bindings[:view], value, 100, 100)
        end
      end

    else
      context.configure field_name
  end
end
filters_for_admin_list(section) click to toggle source
# File lib/mrpin/core/base/model_base.rb, line 115
def self.filters_for_admin_list(section)
  section.filters []
end
init_scopes() click to toggle source

scopes

# File lib/mrpin/core/base/model_base.rb, line 124
def self.init_scopes

end
new(options = nil) click to toggle source

default constructor

Calls superclass method
# File lib/mrpin/core/base/model_base.rb, line 147
def initialize(options = nil)
  super
end
sort_by_for_admin_list(section) click to toggle source
# File lib/mrpin/core/base/model_base.rb, line 110
def self.sort_by_for_admin_list(section)
  section.sort_by :_id
end

Protected Class Methods

add_scope(scope_name, criteria) click to toggle source
# File lib/mrpin/core/base/model_base.rb, line 129
def self.add_scope(scope_name, criteria)
  scope scope_name.to_sym, -> { where(criteria) }
end

Public Instance Methods

clone_model() click to toggle source
# File lib/mrpin/core/base/model_base.rb, line 211
def clone_model
  self.class.new(self.as_json)
end
create_info() click to toggle source
# File lib/mrpin/core/base/model_base.rb, line 152
def create_info
  return nil if class_info.nil?

  result = class_info.new

  class_info.attributes.each do |attribute_name|
    next unless self.respond_to? attribute_name

    attribute_value = get_attribute_value(attribute_name)

    result.send("#{attribute_name}=", attribute_value)
  end

  result
end
create_info_with_check() click to toggle source
# File lib/mrpin/core/base/model_base.rb, line 169
def create_info_with_check
  return nil if class_info.nil?

  result = class_info.new

  class_info.attributes.each do |attribute_name|
    if (self.respond_to?(attribute_name) && self.has_attribute?(attribute_name)) || attribute_name.to_s == 'id'

      attribute_value = get_attribute_value(attribute_name)

      result.send("#{attribute_name}=", attribute_value)
    end
  end

  result
end

Protected Instance Methods

class_info() click to toggle source

Properties

# File lib/mrpin/core/base/model_base.rb, line 138
def class_info
  @class_info = nil
end
get_attribute_value(attribute_name) click to toggle source
# File lib/mrpin/core/base/model_base.rb, line 187
def get_attribute_value(attribute_name)
  result = self.send(attribute_name)

  if result.is_a? (Array)
    result_array = []

    result.each do |attribute_element|
      if attribute_element.kind_of? (ModelBase)
        result_array << attribute_element.create_info
      else
        result_array << attribute_element
      end
    end

    result = result_array

  elsif result.kind_of? (ModelBase)
    result = result.create_info
  end

  result
end