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
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
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
68
69
70
|
# File 'lib/netfira/web_connect/model/record.rb', line 68
def has_file?
@has_file ||= self < FileRecord
end
|
.has_languages? ⇒ Boolean
26
27
28
|
# File 'lib/netfira/web_connect/model/record.rb', line 26
def has_languages?
const_defined? :Translation, false
end
|
.origin_key ⇒ Object
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
|
.schema ⇒ Object
72
73
74
|
# File 'lib/netfira/web_connect/model/record.rb', line 72
def schema
@schema ||= Netfira::WebConnect.schema[self]
end
|
.sendable? ⇒ Boolean
48
49
50
|
# File 'lib/netfira/web_connect/model/record.rb', line 48
def sendable?
@sendable ||= table_props.sendable
end
|
.tree? ⇒ 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
44
45
46
|
# File 'lib/netfira/web_connect/model/record.rb', line 44
def writable?
@writable ||= table_props.writable
end
|
Instance Method Details
#as_readonly ⇒ Object
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_readwrite ⇒ Object
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_id ⇒ Object
87
88
89
|
# File 'lib/netfira/web_connect/model/record.rb', line 87
def origin_id
__send__ origin_key
end
|
#reload ⇒ Object
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
|