<% module_namespacing do -%> class <%= controller_class_name %>Controller < ApiController <%= s3_storage? ? "include MobileWorkflow::S3Storable" : "" %> before_action :rewrite_payload, only: :create load_and_authorize_resource <% if index_action? -%> def index render json: @<%= plural_table_name %>.collect(&:list_item_as_json) end <% end -%> <% if show_action? -%> def show render json: @<%= singular_table_name %>.display_as_json end <% end -%> <% if create_action? -%> def create <% if doorkeeper_oauth? -%> @<%= singular_table_name %>.user = current_user <% end -%> if @<%= singular_table_name %>.save <% if s3_storage? -%> render json: { binary_urls: binary_urls(@<%= singular_table_name %>), response: @<%= singular_table_name %> }, status: :created <% else -%> render json: { response: @<%= singular_table_name %> }, status: :created <% end -%> else render json: { message: @<%= singular_table_name %>.errors.full_messages.to_sentence }, status: :unprocessable_entity end end private def rewrite_payload # Use this method to make any changes to params to make them compatible with ActiveRecord # 1. Example to get selected id from a list # passport_id = params.dig(:payload, :choose_passport, :selected, :id) Rails.logger.debug "Pre-rewrite params: #{params}" # Do your rewriting here end def <%= singular_table_name.underscore %>_params params.require(:payload).permit(<%= permitted_params %>) end <% end -%> end <% end %>