Class: ConstructorPages::Field

Inherits:
ActiveRecord::Base
  • Object
show all
Includes:
CodeNameUniq
Defined in:
app/models/constructor_pages/field.rb

Overview

Field model. Fields allows to add custom fields for template.

Each field has type of value such as float, integer, string…

Constant Summary collapse

TYPES =

Array of available field types

%w{string integer float boolean text date html image}

Instance Method Summary collapse

Methods included from CodeNameUniq

#code_name_uniqueness

Instance Method Details

#create_type_object(page) ⇒ Object

Create object of type_value by page



42
# File 'app/models/constructor_pages/field.rb', line 42

def create_type_object(page); type_class.create(field_id: id, page_id: page.id) end

#find_type_object(page) ⇒ Object

Return object of type_value by page



39
# File 'app/models/constructor_pages/field.rb', line 39

def find_type_object(page); type_class.where(field_id: id, page_id: page.id).first end

#get_value_for(page) ⇒ Object

Get value from type_field for specified page



48
49
50
51
# File 'app/models/constructor_pages/field.rb', line 48

def get_value_for(page)
  _type_object = find_type_object(page)
  _type_object ? _type_object.value : nil
end

#remove_type_object(page) ⇒ Object

Remove all type_fields values for specified page



45
# File 'app/models/constructor_pages/field.rb', line 45

def remove_type_object(page); find_type_object(page).destroy end

#set_value_for(page, value) ⇒ Object

Set value type_field for specified page



54
55
56
57
58
59
60
61
# File 'app/models/constructor_pages/field.rb', line 54

def set_value_for(page, value)
  _type_object = find_type_object(page)

  if _type_object
    _type_object.value = value
    _type_object.save!
  end
end

#type_classObject

Return constant of model type_value



36
# File 'app/models/constructor_pages/field.rb', line 36

def type_class; "constructor_pages/types/#{type_value}_type".classify.constantize end