Class: ApiMe::Generators::ControllerGenerator
- Inherits:
-
Rails::Generators::NamedBase
- Object
- Rails::Generators::NamedBase
- ApiMe::Generators::ControllerGenerator
- Defined in:
- lib/generators/api_me/controller/controller_generator.rb
Instance Method Summary collapse
- #association_attribute_names ⇒ Object
- #associations ⇒ Object
- #attributes_names ⇒ Object
- #controller_class_name ⇒ Object
- #controllers_api_version ⇒ Object
- #controllers_namespace ⇒ Object
- #create_api_controller_file ⇒ Object
- #nonpolymorphic_attribute_names ⇒ Object
- #parent_class_name ⇒ Object
- #polymorphic_attribute_names ⇒ Object
- #strong_parameters ⇒ Object
Instance Method Details
#association_attribute_names ⇒ Object
55 56 57 |
# File 'lib/generators/api_me/controller/controller_generator.rb', line 55 def association_attribute_names nonpolymorphic_attribute_names + (polymorphic_attribute_names) end |
#associations ⇒ Object
39 40 41 |
# File 'lib/generators/api_me/controller/controller_generator.rb', line 39 def associations attributes.select(&:reference?) end |
#attributes_names ⇒ Object
35 36 37 |
# File 'lib/generators/api_me/controller/controller_generator.rb', line 35 def attributes_names [:id] + attributes.select { |attr| !attr.reference? }.map { |a| a.name.to_sym } end |
#controller_class_name ⇒ Object
29 30 31 32 33 |
# File 'lib/generators/api_me/controller/controller_generator.rb', line 29 def controller_class_name "#{controllers_namespace.capitalize}::"\ "#{controllers_api_version.capitalize}::"\ "#{plural_name.camelize}Controller" end |
#controllers_api_version ⇒ Object
24 25 26 27 |
# File 'lib/generators/api_me/controller/controller_generator.rb', line 24 def controllers_api_version 'v1' # @generators.options.fetch(:api, {}).fetch(:version, 'v1') end |
#controllers_namespace ⇒ Object
19 20 21 22 |
# File 'lib/generators/api_me/controller/controller_generator.rb', line 19 def controllers_namespace 'api' # @generators.options.fetch(:api, {}).fetch(:namespace, 'api') end |
#create_api_controller_file ⇒ Object
11 12 13 14 15 16 17 |
# File 'lib/generators/api_me/controller/controller_generator.rb', line 11 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 ⇒ Object
43 44 45 46 47 |
# File 'lib/generators/api_me/controller/controller_generator.rb', line 43 def nonpolymorphic_attribute_names associations.select { |attr| attr.type.in?([:belongs_to, :references]) } .reject { |attr| attr..fetch(:polymorphic, false) } .map { |attr| "#{attr.name}_id".to_sym } end |
#parent_class_name ⇒ Object
63 64 65 66 67 68 69 |
# File 'lib/generators/api_me/controller/controller_generator.rb', line 63 def parent_class_name if [:parent] [:parent] else 'ApplicationController' end end |
#polymorphic_attribute_names ⇒ Object
49 50 51 52 53 |
# File 'lib/generators/api_me/controller/controller_generator.rb', line 49 def polymorphic_attribute_names associations.select { |attr| attr.type.in?([:belongs_to, :references]) } .select { |attr| attr..fetch(:polymorphic, false) } .map { |attr| ["#{attr.name}_id".to_sym, "#{attr.name}_type".to_sym] }.flatten end |
#strong_parameters ⇒ Object
59 60 61 |
# File 'lib/generators/api_me/controller/controller_generator.rb', line 59 def strong_parameters (attributes_names + association_attribute_names).map(&:inspect).join(', ') end |