class Netfira::WebConnect::Model::Record

noinspection RubyStringKeysInHashInspection

Public Class Methods

find_by_origin_id(shop, id) click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 56
def find_by_origin_id(shop, id)
  id = id.b if OctaWord === id
  with_deleted.find_by origin_key => id, shop_id: shop.id
end
find_or_create_by_origin_id(shop, id) click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 67
def find_or_create_by_origin_id(shop, id)
  record = find_or_initialize_by_origin_id(shop, id)
  record.save unless record.persisted?
  record
end
find_or_initialize_by_origin_id(shop, id) click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 61
def find_or_initialize_by_origin_id(shop, id)
  id = Guid.from_base64(id).b if origin_key == :guid
  find_by_origin_id(shop, id).tap { |record| record.restore! if record && record.destroyed? } or
      new(origin_key => id, shop_id: shop.id)
end
has_file?() click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 73
def has_file?
  @has_file ||= self < FileRecord
end
has_languages?() click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 36
def has_languages?
  const_defined? :Translation, false
end
origin_key() click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 44
def origin_key
  @origin_key ||= writable? ? :guid : (table_props.origin_key || "#{single_name}_id").to_sym
end
schema() click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 77
def schema
  @schema ||= Netfira::WebConnect.schema[self]
end
sendable() click to toggle source
Calls superclass method
# File lib/netfira/web_connect/model/record.rb, line 19
def sendable
  return super unless self == Model::Record # This should raise an error!
  @sendable_classes ||= Models.constants.map do |name|
    Models.const_get name
  end.select do |klass|
    Class === klass && klass < Model::Record && klass.sendable?
  end
end
sendable?() click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 52
def sendable?
  @sendable ||= table_props.sendable
end
table_name() click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 28
def table_name
  @table_name ||= if self == Model::Record
    Models::Table.table_name
  else
    Netfira::WebConnect.db_table_prefix(plural_name).to_s
  end
end
tree?() click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 40
def tree?
  @is_tree ||= attribute_names.include? 'parent_id'
end
writable?() click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 48
def writable?
  @writable ||= table_props.writable
end

Private Class Methods

table_props() click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 133
def self.table_props
  @table_props
end

Public Instance Methods

as_readonly() { || ... } click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 96
def as_readonly
  readonly!
  yield
  instance_variable_set :@readonly, false
  self
end
as_readwrite() { || ... } click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 103
def as_readwrite
  instance_variable_set :@readonly, false
  yield
  readonly!
  self
end
origin_id() click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 92
def origin_id
  __send__ origin_key
end
reload() click to toggle source
Calls superclass method
# File lib/netfira/web_connect/model/record.rb, line 110
def reload
  clear_translations if has_languages?
  super
end
write_with_type_casting(key, value) click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 115
def write_with_type_casting(key, value)
  schema = self.class.schema
  if schema.localize.include? key
    set_translated_string key, value
  elsif key == :parent_id
    value = value.to_s
    write_attribute key, value.empty? ? nil : value
  else
    type = schema.columns[key]
    return false unless type
    value = value.to_s if type == 'string'
    write_attribute key, value
  end
  true
end

Private Instance Methods

after_add_relation(model) click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 141
def after_add_relation(model)
  model.shop_id = shop_id
end
init() click to toggle source
# File lib/netfira/web_connect/model/record.rb, line 137
def init
  self.shop_id ||= 0
end