Class: Netfira::WebConnect::Model::Record

Inherits:
Netfira::WebConnect::Model show all
Extended by:
Materialization
Includes:
Digests, Events, Relations, Serializer
Defined in:
lib/netfira/web_connect/model.rb,
lib/netfira/web_connect/model/record.rb,
lib/netfira/web_connect/model/record/events.rb,
lib/netfira/web_connect/model/record/digests.rb,
lib/netfira/web_connect/model/record/sendable.rb,
lib/netfira/web_connect/model/record/relations.rb,
lib/netfira/web_connect/model/record/serializer.rb,
lib/netfira/web_connect/model/record/translations.rb,
lib/netfira/web_connect/model/record/materialization.rb

Defined Under Namespace

Modules: Digests, Events, Materialization, Relations, Sendable, Serializer, Translations, Tree Classes: FileRecord, TranslatedString, Translation

Constant Summary

Constants included from Serializer

Serializer::EXCLUDE_FROM_SERIALIZE

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Materialization

materialize

Methods included from Digests

#digest

Methods included from Serializer

#to_s

Methods included from Relations

#relate, #unrelate

Methods inherited from Netfira::WebConnect::Model

plural_name, single_name

Class Method Details

.find_by_origin_id(shop, id) ⇒ Object



52
53
54
55
# File 'lib/netfira/web_connect/model/record.rb', line 52

def find_by_origin_id(shop, id)
  id = id.b if OctaWord === id
  find_by origin_key => id, shop_id: shop.id
end

.find_or_create_by_origin_id(shop, id) ⇒ Object



61
62
63
64
65
# File 'lib/netfira/web_connect/model/record.rb', line 61

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) ⇒ Object



57
58
59
# File 'lib/netfira/web_connect/model/record.rb', line 57

def find_or_initialize_by_origin_id(shop, id)
  find_by_origin_id(shop, id) || new(origin_key => id, shop_id: shop.id)
end

.has_file?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'lib/netfira/web_connect/model/record.rb', line 67

def has_file?
  @has_file ||= self < FileRecord
end

.has_languages?Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/netfira/web_connect/model/record.rb', line 26

def has_languages?
  const_defined? :Translation, false
end

.origin_keyObject



34
35
36
37
38
39
40
41
42
# File 'lib/netfira/web_connect/model/record.rb', line 34

def origin_key
  @origin_key ||= if sendable?
                    :guid
                  elsif writable?
                    nil
                  else
                    (table_props.origin_key || "#{single_name}_id").to_sym
                  end
end


75
76
77
# File 'lib/netfira/web_connect/model/record.rb', line 75

def related_classes
  @related_classes ||= []
end

.schemaObject



71
72
73
# File 'lib/netfira/web_connect/model/record.rb', line 71

def schema
  @schema ||= Netfira::WebConnect.schema[self]
end

.sendable?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/netfira/web_connect/model/record.rb', line 48

def sendable?
  @sendable ||= table_props.sendable
end

.table_nameObject



18
19
20
21
22
23
24
# File 'lib/netfira/web_connect/model/record.rb', line 18

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?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/netfira/web_connect/model/record.rb', line 30

def tree?
  @is_tree ||= attribute_names.include? 'parent_id'
end

.writable?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/netfira/web_connect/model/record.rb', line 44

def writable?
  @writable ||= table_props.writable
end

Instance Method Details

#as_readonlyObject



90
91
92
93
94
# File 'lib/netfira/web_connect/model/record.rb', line 90

def as_readonly
  readonly!
  yield
  instance_variable_set :@readonly, false
end

#origin_idObject



86
87
88
# File 'lib/netfira/web_connect/model/record.rb', line 86

def origin_id
  __send__ origin_key
end

#reloadObject



96
97
98
99
# File 'lib/netfira/web_connect/model/record.rb', line 96

def reload
  clear_translations if has_languages?
  super
end

#write_with_type_casting(key, value) ⇒ Object



101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/netfira/web_connect/model/record.rb', line 101

def write_with_type_casting(key, value)
  schema = self.class.schema
  if schema.localize.include? key
    set_translated_string key, value
  else
    type = schema.columns[key]
    return false unless type
    value = value.to_s if type == 'string'
    write_attribute key, value
  end
  true
end