Class: LiveComponent::RecordProxy
- Inherits:
-
Object
- Object
- LiveComponent::RecordProxy
show all
- Defined in:
- lib/live_component/record_proxy.rb
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(gid, attributes) ⇒ RecordProxy
Returns a new instance of RecordProxy.
39
40
41
42
|
# File 'lib/live_component/record_proxy.rb', line 39
def initialize(gid, attributes)
@gid = gid
@attributes = attributes
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args, **kwargs, &block) ⇒ Object
48
49
50
51
|
# File 'lib/live_component/record_proxy.rb', line 48
def method_missing(method_name, *args, **kwargs, &block)
load unless @record
@record.send(method_name, *args, **kwargs, &block)
end
|
Class Method Details
.for(gid, attributes = {}) ⇒ Object
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/live_component/record_proxy.rb', line 6
def for(gid, attributes = {})
proxy_mixins[gid.model_class] ||= Module.new.tap do |mod|
mtds = (gid.model_class.column_names - ["id"]).map do |column_name|
" def \#{column_name}\n return @record.\#{column_name} if @record\n\n if @attributes.include?(\"\#{column_name}\")\n return @attributes[\"\#{column_name}\"]\n end\n\n load\n\n @record.\#{column_name}\n end\n RUBY\n end\n\n mod.class_eval(mtds.join(\"\\n\"), __FILE__, __LINE__)\n end\n\n new(gid, attributes).tap do |proxy|\n proxy.singleton_class.include(proxy_mixins[gid.model_class])\n end\nend\n"
|
Instance Method Details
#cached_attributes ⇒ Object
44
45
46
|
# File 'lib/live_component/record_proxy.rb', line 44
def cached_attributes
@attributes
end
|
#id ⇒ Object
61
62
63
|
# File 'lib/live_component/record_proxy.rb', line 61
def id
@id ||= @gid.model_class.type_for_attribute("id").cast(@gid.model_id)
end
|
#load ⇒ Object
53
54
55
|
# File 'lib/live_component/record_proxy.rb', line 53
def load
@record ||= GlobalID::Locator.locate(@gid)
end
|
#persisted? ⇒ Boolean
81
82
83
|
# File 'lib/live_component/record_proxy.rb', line 81
def persisted?
true
end
|
#reload ⇒ Object
57
58
59
|
# File 'lib/live_component/record_proxy.rb', line 57
def reload
@record = @record ? @record.reload : load
end
|
#to_global_id ⇒ Object
65
66
67
|
# File 'lib/live_component/record_proxy.rb', line 65
def to_global_id
GlobalID.new(@gid.uri)
end
|
#to_model ⇒ Object
73
74
75
|
# File 'lib/live_component/record_proxy.rb', line 73
def to_model
self
end
|
#to_param ⇒ Object
77
78
79
|
# File 'lib/live_component/record_proxy.rb', line 77
def to_param
id.to_s
end
|
#to_signed_global_id ⇒ Object
69
70
71
|
# File 'lib/live_component/record_proxy.rb', line 69
def to_signed_global_id
SignedGlobalID.new(@gid.uri)
end
|