Class: Chassis::DirtySession
- Inherits:
-
Proxy
- Object
- Chassis::DirtySession
show all
- Defined in:
- lib/chassis/dirty_session.rb
Instance Method Summary
collapse
Constructor Details
Returns a new instance of DirtySession.
5
6
7
8
9
|
# File 'lib/chassis/dirty_session.rb', line 5
def initialize(*args)
super
@original_values = { }
@new_values = { }
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object
36
37
38
39
40
41
42
43
44
45
46
47
48
|
# File 'lib/chassis/dirty_session.rb', line 36
def method_missing(name, *args, &block)
raise MissingObject, name unless __getobj__
if writer_method?(name)
handle_writer_method name, *args, &block
elsif changed_method?(name)
handle_changed_method name
elsif original_method?(name)
handle_original_method name
else
__getobj__.send name, *args, &block
end
end
|
Instance Method Details
#changes ⇒ Object
27
28
29
|
# File 'lib/chassis/dirty_session.rb', line 27
def changes
Set.new original_values.keys
end
|
#clean? ⇒ Boolean
11
12
13
|
# File 'lib/chassis/dirty_session.rb', line 11
def clean?
new_values.empty?
end
|
#dirty? ⇒ Boolean
15
16
17
|
# File 'lib/chassis/dirty_session.rb', line 15
def dirty?
!clean?
end
|
#new_values ⇒ Object
23
24
25
|
# File 'lib/chassis/dirty_session.rb', line 23
def new_values
@new_values
end
|
#original_values ⇒ Object
19
20
21
|
# File 'lib/chassis/dirty_session.rb', line 19
def original_values
@original_values
end
|
#reset! ⇒ Object
31
32
33
34
|
# File 'lib/chassis/dirty_session.rb', line 31
def reset!
original_values.clear
new_values.clear
end
|
#respond_to_missing?(name, include_private = false) ⇒ Boolean
50
51
52
53
54
55
56
|
# File 'lib/chassis/dirty_session.rb', line 50
def respond_to_missing?(name, include_private = false)
if changed_method?(name) || original_method?(name)
__getobj__.respond_to? reader_method(name)
else
super
end
end
|