Class: ApiMe::Generators::ControllerGenerator

Inherits:
Rails::Generators::NamedBase
  • Object
show all
Defined in:
lib/generators/api_me/controller/controller_generator.rb

Instance Method Summary collapse

Instance Method Details

#association_attribute_namesObject



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

#associationsObject



39
40
41
# File 'lib/generators/api_me/controller/controller_generator.rb', line 39

def associations
  attributes.select(&:reference?)
end

#attributes_namesObject



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_nameObject



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_versionObject



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_namespaceObject



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_fileObject



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_namesObject



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.attr_options.fetch(:polymorphic, false) }
    .map { |attr| "#{attr.name}_id".to_sym }
end

#parent_class_nameObject



63
64
65
66
67
68
69
# File 'lib/generators/api_me/controller/controller_generator.rb', line 63

def parent_class_name
  if options[:parent]
    options[:parent]
  else
    'ApplicationController'
  end
end

#polymorphic_attribute_namesObject



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.attr_options.fetch(:polymorphic, false) }
    .map { |attr| ["#{attr.name}_id".to_sym, "#{attr.name}_type".to_sym] }.flatten
end

#strong_parametersObject



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