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
|