class Readymade::Operation

Attributes

form[R]
record[R]
record_params[R]

Private Instance Methods

assign_attributes() click to toggle source
# File lib/readymade/operation.rb, line 22
def assign_attributes
  record.assign_attributes(record_params)
end
build_form() click to toggle source
# File lib/readymade/operation.rb, line 12
def build_form
  @form = form_class.new(record_params, record: record)
end
fail(status = :fail, args = {}) click to toggle source
# File lib/readymade/operation.rb, line 53
def fail(status = :fail, args = {})
  sync_errors_to_form

  response(status, args.merge!(record: record,
                               record_params: record_params,
                               form: form,
                               errors: form&.errors&.messages.presence || record&.errors&.messages))
end
form_class() click to toggle source
# File lib/readymade/operation.rb, line 62
def form_class
  raise 'Define your own form object class in your operation'
end
form_valid?() click to toggle source
# File lib/readymade/operation.rb, line 16
def form_valid?
  build_form if @form.nil? && defined?(:build_form)

  form.validate
end
record_valid?() click to toggle source
# File lib/readymade/operation.rb, line 26
def record_valid?
  return true if record.errors.none? && record.valid?

  false
end
response(status, *args) click to toggle source
# File lib/readymade/operation.rb, line 36
def response(status, *args)
  Response.new(status, *args)
end
save_record() click to toggle source
# File lib/readymade/operation.rb, line 32
def save_record
  record.save
end
success(*args) click to toggle source
# File lib/readymade/operation.rb, line 40
def success(*args)
  response(:success, *args)
end
sync_errors_to_form() click to toggle source
# File lib/readymade/operation.rb, line 66
def sync_errors_to_form
  form.sync_errors(from: record, to: form)
end
sync_errors_to_record() click to toggle source
# File lib/readymade/operation.rb, line 70
def sync_errors_to_record
  form.sync_errors
end
validation_fail(status = :validation_fail, args = {}) click to toggle source
# File lib/readymade/operation.rb, line 44
def validation_fail(status = :validation_fail, args = {})
  sync_errors_to_form

  response(status, args.merge!(record: record,
                               record_params: record_params,
                               form: form,
                               errors: form.errors.messages))
end