Module: MemoryModel::Base::Actionable
- Extended by:
- ActiveSupport::Concern
- Included in:
- MemoryModel::Base
- Defined in:
- lib/memory_model/base/actionable.rb
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- VALID_IVARS =
[ :@deleted, :@attributes, :@timestamp, :@version ]
Instance Method Summary collapse
- #commit ⇒ Object
- #deep_dup ⇒ Object
- #delete ⇒ Object
- #deleted? ⇒ Boolean
- #deleted_at ⇒ Object
- #destroy ⇒ Object
- #dup ⇒ Object
- #freeze ⇒ Object
- #restore ⇒ Object
- #save ⇒ Object
Instance Method Details
#commit ⇒ Object
19 20 21 22 23 24 |
# File 'lib/memory_model/base/actionable.rb', line 19 def commit = Time.now @version = SecureRandom.hex(6) self.class.insert self self end |
#deep_dup ⇒ Object
50 51 52 |
# File 'lib/memory_model/base/actionable.rb', line 50 def deep_dup Marshal.load Marshal.dump self end |
#delete ⇒ Object
26 27 28 29 30 |
# File 'lib/memory_model/base/actionable.rb', line 26 def delete @deleted = true commit freeze end |
#deleted? ⇒ Boolean
32 33 34 |
# File 'lib/memory_model/base/actionable.rb', line 32 def deleted? !!@deleted end |
#deleted_at ⇒ Object
36 37 38 |
# File 'lib/memory_model/base/actionable.rb', line 36 def deleted_at deleted? ? : nil end |
#destroy ⇒ Object
40 41 42 43 44 |
# File 'lib/memory_model/base/actionable.rb', line 40 def destroy run_callbacks :destroy do delete end end |
#dup ⇒ Object
46 47 48 |
# File 'lib/memory_model/base/actionable.rb', line 46 def dup deep_dup end |
#freeze ⇒ Object
54 55 56 57 58 59 60 61 |
# File 'lib/memory_model/base/actionable.rb', line 54 def freeze instance_variables.reject { |ivar| ivar.in? VALID_IVARS }.each do |ivar| remove_instance_variable ivar if instance_variable_defined?(ivar) end instance_variables.each { |ivar| instance_variable_get(ivar).freeze } deep_freeze super end |
#restore ⇒ Object
72 73 74 75 76 77 |
# File 'lib/memory_model/base/actionable.rb', line 72 def restore instance = frozen? ? self.dup : self instance.instance_variable_set :@deleted, false instance.save instance end |
#save ⇒ Object
63 64 65 66 67 68 69 70 |
# File 'lib/memory_model/base/actionable.rb', line 63 def save callback = persisted? ? :update : :create run_callbacks callback do run_callbacks :save do commit end end end |