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/record/writable.rb,
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
Overview
noinspection RubyStringKeysInHashInspection
Defined Under Namespace
Modules: Digests, Events, Materialization, Relations, Sendable, Serializer, Translations, Tree, Writable
Classes: FileRecord, TranslatedString, Translation
Constant Summary
Constants included
from Serializer
Serializer::EXCLUDE_FROM_SERIALIZE
Class Method Summary
collapse
Instance Method Summary
collapse
materialize
Methods included from Digests
#digest
Methods included from Serializer
#to_s
Methods included from Relations
#relate, #unrelate
#dispatch_event, plural_name, single_name
Class Method Details
.find_by_origin_id(shop, id) ⇒ Object
56
57
58
59
|
# 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) ⇒ Object
67
68
69
70
71
|
# 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) ⇒ Object
61
62
63
64
65
|
# 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? ⇒ Boolean
73
74
75
|
# File 'lib/netfira/web_connect/model/record.rb', line 73
def has_file?
@has_file ||= self < FileRecord
end
|
.has_languages? ⇒ Boolean
36
37
38
|
# File 'lib/netfira/web_connect/model/record.rb', line 36
def has_languages?
const_defined? :Translation, false
end
|
.origin_key ⇒ Object
44
45
46
|
# 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
|
81
82
83
|
# File 'lib/netfira/web_connect/model/record.rb', line 81
def related_classes
@related_classes ||= []
end
|
.schema ⇒ Object
77
78
79
|
# File 'lib/netfira/web_connect/model/record.rb', line 77
def schema
@schema ||= Netfira::WebConnect.schema[self]
end
|
.sendable ⇒ Object
19
20
21
22
23
24
25
26
|
# File 'lib/netfira/web_connect/model/record.rb', line 19
def sendable
return super unless self == Model::Record
@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? ⇒ Boolean
52
53
54
|
# File 'lib/netfira/web_connect/model/record.rb', line 52
def sendable?
@sendable ||= table_props.sendable
end
|
.table_name ⇒ Object
28
29
30
31
32
33
34
|
# 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? ⇒ Boolean
40
41
42
|
# File 'lib/netfira/web_connect/model/record.rb', line 40
def tree?
@is_tree ||= attribute_names.include? 'parent_id'
end
|
.writable? ⇒ Boolean
48
49
50
|
# File 'lib/netfira/web_connect/model/record.rb', line 48
def writable?
@writable ||= table_props.writable
end
|
Instance Method Details
#as_readonly ⇒ Object
96
97
98
99
100
101
|
# File 'lib/netfira/web_connect/model/record.rb', line 96
def as_readonly
readonly!
yield
instance_variable_set :@readonly, false
self
end
|
#as_readwrite ⇒ Object
103
104
105
106
107
108
|
# File 'lib/netfira/web_connect/model/record.rb', line 103
def as_readwrite
instance_variable_set :@readonly, false
yield
readonly!
self
end
|
#origin_id ⇒ Object
92
93
94
|
# File 'lib/netfira/web_connect/model/record.rb', line 92
def origin_id
__send__ origin_key
end
|
#reload ⇒ Object
110
111
112
113
|
# 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) ⇒ Object
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
# 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
|