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

#dispatch_event, 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
  with_deleted.find_by origin_key => id, shop_id: shop.id
end

.find_or_create_by_origin_id(shop, id) ⇒ Object



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

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
60
# 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).tap { |record| record.restore! if record && record.destroyed? } or
      new(origin_key => id, shop_id: shop.id)
end

.has_file?Boolean

Returns:

  • (Boolean)


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

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


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

def related_classes
  @related_classes ||= []
end

.schemaObject



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

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



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

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

#as_readwriteObject



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

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

#origin_idObject



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

def origin_id
  __send__ origin_key
end

#reloadObject



103
104
105
106
# File 'lib/netfira/web_connect/model/record.rb', line 103

def reload
  clear_translations if has_languages?
  super
end

#write_with_type_casting(key, value) ⇒ Object



108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/netfira/web_connect/model/record.rb', line 108

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