class Operationable::Operation

Attributes

params[R]
record[R]
result[R]
user[R]

Public Class Methods

new(record, user, params={}) click to toggle source
# File lib/operationable/operation.rb, line 6
def initialize(record, user, params={})
  @record = record
  @user = user
  @params = params
end

Public Instance Methods

process() click to toggle source
# File lib/operationable/operation.rb, line 12
def process
  return false unless valid

  @result = build

  return false unless persist

  run

  record.reload
end

Private Instance Methods

build() click to toggle source
# File lib/operationable/operation.rb, line 38
def build
  "#{class_name}::Builder".constantize.new(record, user, params).build
end
class_name() click to toggle source
# File lib/operationable/operation.rb, line 46
def class_name
  self.class.name
end
operation_name() click to toggle source
# File lib/operationable/operation.rb, line 50
def operation_name
  self.class.to_s.split('::').last(2).map(&:underscore).join(':')
end
persist() click to toggle source
# File lib/operationable/operation.rb, line 30
def persist
  save_record(record)
end
run() click to toggle source
# File lib/operationable/operation.rb, line 42
def run
  "#{class_name}::Runner".constantize.new(record, params, result, user).run
end
save_record(record) click to toggle source
# File lib/operationable/operation.rb, line 34
def save_record(record)
  record
end
valid() click to toggle source
# File lib/operationable/operation.rb, line 26
def valid
  true
end