class Clowne::Adapters::Base
ORM-independant adapter (just calls dup). Works with nullify/finalize.
Public Class Methods
dup_record(record)
click to toggle source
Duplicate record and remember record <-> clone relationship in operation Cab be overrided in special adapter
record
-
Instance of record (ActiveRecord or Sequel)
# File lib/clowne/adapters/base.rb, line 22 def dup_record(record) record.dup.tap do |clone| operation = operation_class.current operation.add_mapping(record, clone) end end
operation_class()
click to toggle source
Operation class which using for cloning Cab be overrided in special adapter
# File lib/clowne/adapters/base.rb, line 31 def operation_class Clowne::Utils::Operation end
Public Instance Methods
clone(source, plan, params: {})
click to toggle source
Using a plan make full duplicate of record
source
-
Instance of cloned object (ex: User.new(posts: posts))
plan
-
Array of
Declarations
params
-
Custom params hash
# File lib/clowne/adapters/base.rb, line 40 def clone(source, plan, params: {}) declarations = plan.declarations init_record = init_record(self.class.dup_record(source)) declarations.inject(init_record) do |record, (type, declaration)| resolver_for(type).call(source, record, declaration, params: params, adapter: self) end end
init_record(record)
click to toggle source
# File lib/clowne/adapters/base.rb, line 49 def init_record(record) # Override in custom adapters record end