Class: Services::Models::FindOrCreateBy

Inherits:
ApiMaker::BaseService
  • Object
show all
Defined in:
app/api_maker/services/models/find_or_create_by.rb

Instance Method Summary collapse

Instance Method Details

#performObject



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'app/api_maker/services/models/find_or_create_by.rb', line 2

def perform
  resource_name = args.fetch(:resource_name)
  resource = "Resources::#{resource_name}Resource".safe_constantize
  model_class = resource.model_class
  find_or_create_by_args = args.fetch(:find_or_create_by_args)
  additional_data = args[:additional_data]

  model = model_class.find_or_initialize_by(find_or_create_by_args)
  model.assign_attributes(additional_data) if model.new_record? && additional_data

  if model.save
    succeed! model: model
  else
    fail! errors: model.errors.full_messages
  end
end