Class: ApiMe::Generators::PolicyGenerator

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

Instance Method Summary collapse

Instance Method Details

#association_attribute_namesObject



41
42
43
# File 'lib/generators/api_me/policy/policy_generator.rb', line 41

def association_attribute_names
  nonpolymorphic_attribute_names + polymorphic_attribute_names
end

#associationsObject



25
26
27
# File 'lib/generators/api_me/policy/policy_generator.rb', line 25

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

#attributes_namesObject



21
22
23
# File 'lib/generators/api_me/policy/policy_generator.rb', line 21

def attributes_names
  attributes.reject(&:reference?).map { |a| a.name.to_sym }
end

#create_api_policy_fileObject



13
14
15
# File 'lib/generators/api_me/policy/policy_generator.rb', line 13

def create_api_policy_file
  template 'policy.rb', File.join('app/policies', "#{singular_name}_policy.rb")
end

#nonpolymorphic_attribute_namesObject



29
30
31
32
33
# File 'lib/generators/api_me/policy/policy_generator.rb', line 29

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_nameObject



49
50
51
52
53
54
55
# File 'lib/generators/api_me/policy/policy_generator.rb', line 49

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

#policy_class_nameObject



17
18
19
# File 'lib/generators/api_me/policy/policy_generator.rb', line 17

def policy_class_name
  "#{class_name}Policy"
end

#polymorphic_attribute_namesObject



35
36
37
38
39
# File 'lib/generators/api_me/policy/policy_generator.rb', line 35

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_parametersObject



45
46
47
# File 'lib/generators/api_me/policy/policy_generator.rb', line 45

def strong_parameters
  (attributes_names + association_attribute_names).map(&:inspect).join(', ')
end