class ApiMe::Generators::ControllerGenerator
Public Instance Methods
association_attribute_names()
click to toggle source
# File lib/generators/api_me/controller/controller_generator.rb, line 57 def association_attribute_names nonpolymorphic_attribute_names + polymorphic_attribute_names end
associations()
click to toggle source
# File lib/generators/api_me/controller/controller_generator.rb, line 41 def associations attributes.select(&:reference?) end
attributes_names()
click to toggle source
# File lib/generators/api_me/controller/controller_generator.rb, line 37 def attributes_names [:id] + attributes.reject(&:reference?).map { |a| a.name.to_sym } end
controller_class_name()
click to toggle source
# File lib/generators/api_me/controller/controller_generator.rb, line 31 def controller_class_name "#{controllers_namespace.capitalize}::"\ "#{controllers_api_version.capitalize}::"\ "#{plural_name.camelize}Controller" end
controllers_api_version()
click to toggle source
# File lib/generators/api_me/controller/controller_generator.rb, line 26 def controllers_api_version 'v1' # @generators.options.fetch(:api, {}).fetch(:version, 'v1') end
controllers_namespace()
click to toggle source
# File lib/generators/api_me/controller/controller_generator.rb, line 21 def controllers_namespace 'api' # @generators.options.fetch(:api, {}).fetch(:namespace, 'api') end
create_api_controller_file()
click to toggle source
# File lib/generators/api_me/controller/controller_generator.rb, line 13 def create_api_controller_file template 'controller.rb', File.join('app/controllers', controllers_namespace, controllers_api_version, "#{plural_name}_controller.rb") insert_after_version(plural_name) end
nonpolymorphic_attribute_names()
click to toggle source
# File lib/generators/api_me/controller/controller_generator.rb, line 45 def nonpolymorphic_attribute_names associations.select { |attr| attr.type.in?(%i[belongs_to references]) } .reject { |attr| attr.attr_options.fetch(:polymorphic, false) } .map { |attr| "#{attr.name}_id".to_sym } end
parent_class_name()
click to toggle source
# File lib/generators/api_me/controller/controller_generator.rb, line 65 def parent_class_name if options[:parent] options[:parent] else 'ApplicationController' end end
polymorphic_attribute_names()
click to toggle source
# File lib/generators/api_me/controller/controller_generator.rb, line 51 def polymorphic_attribute_names associations.select { |attr| attr.type.in?(%i[belongs_to references]) } .select { |attr| attr.attr_options.fetch(:polymorphic, false) } .map { |attr| ["#{attr.name}_id".to_sym, "#{attr.name}_type".to_sym] }.flatten end
strong_parameters()
click to toggle source
# File lib/generators/api_me/controller/controller_generator.rb, line 61 def strong_parameters (attributes_names + association_attribute_names).map(&:inspect).join(', ') end
Private Instance Methods
insert_after_version(resource_name)
click to toggle source
# File lib/generators/api_me/controller/controller_generator.rb, line 75 def insert_after_version(resource_name) maybe_create_api_v1_namespace in_root do insert_into_file( 'config/routes.rb', " resources :#{resource_name}, only: [:show, :index, :create, :update, :destroy]\n", # rubocop:disable Metrics/LineLength after: "namespace :#{controllers_api_version} do\n" ) end end
maybe_create_api_v1_namespace()
click to toggle source
# File lib/generators/api_me/controller/controller_generator.rb, line 87 def maybe_create_api_v1_namespace in_root do unless File.readlines('config/routes.rb').grep("namespace #{controllers_namespace} do") route <<~ROUTE namespace :#{controllers_namespace} do namespace :#{controllers_api_version} do end end ROUTE end end end