Sha256: e71d7eb22b11c929b3f2a6d4d2dc12aa10b0e9c6a15846a2ef46026fa6bc7109
Contents?: true
Size: 1.73 KB
Versions: 5
Compression:
Stored size: 1.73 KB
Contents
module ApiMe module Generators class FilterGenerator < ::Rails::Generators::NamedBase source_root File.expand_path('templates', __dir__) check_class_collision suffix: 'Filter' argument :attributes, type: :array, default: [], banner: 'field field' class_option :parent, type: :string, desc: 'The parent class for the generated filter' def create_api_filter_file template 'filter.rb', File.join('app/filters', "#{singular_name}_filter.rb") end def filter_class_name "#{class_name}Filter" end def attributes_names attributes.reject(&:reference?).map { |a| a.name.to_sym } end def associations attributes.select(&:reference?) end 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 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 def association_attribute_names nonpolymorphic_attribute_names + polymorphic_attribute_names end def strong_parameters (attributes_names + association_attribute_names).map(&:inspect).join(', ') end def parent_class_name if options[:parent] options[:parent] else 'ApiMe::BaseFilter' end end hook_for :test_framework end end end
Version data entries
5 entries across 5 versions & 1 rubygems