class Wallaby::ActiveRecord::ModelServiceProvider::Permitter

Whitelist the params for mass-assignment

Public Class Methods

new(model_decorator) click to toggle source

@param model_decorator [Wallaby::ModelDecorator]

# File lib/adapters/wallaby/active_record/model_service_provider/permitter.rb, line 9
def initialize(model_decorator)
  @model_decorator = model_decorator
end

Public Instance Methods

compound_hashed_fields() click to toggle source

@return [Array<String>] a list of field names of range and association

# File lib/adapters/wallaby/active_record/model_service_provider/permitter.rb, line 25
def compound_hashed_fields
  field_names =
    range_fields.keys +
    many_association_fields.map { |_, metadata| metadata[:foreign_key] }
  field_names.each_with_object({}) { |name, hash| hash[name] = [] }
end
simple_field_names() click to toggle source

@return [Array<String>] a list of field names of general types

# File lib/adapters/wallaby/active_record/model_service_provider/permitter.rb, line 14
def simple_field_names
  field_names =
    non_range_fields.keys +
    belongs_to_fields.map do |_, metadata|
      [metadata[:foreign_key], metadata[:polymorphic_type]]
    end.flatten.compact
  fields = [@model_decorator.primary_key, 'created_at', 'updated_at']
  field_names.reject { |field_name| fields.include? field_name }
end

Protected Instance Methods

association_fields() click to toggle source

@return [Array<String>] a list of association field names

# File lib/adapters/wallaby/active_record/model_service_provider/permitter.rb, line 50
def association_fields
  @model_decorator.fields.select { |_, metadata| metadata[:is_association] && !metadata[:has_scope] }
end
belongs_to_fields() click to toggle source

@return [Array<String>] a list of belongs_to association field names

# File lib/adapters/wallaby/active_record/model_service_provider/permitter.rb, line 62
def belongs_to_fields
  association_fields.select { |_, metadata| metadata[:type] == 'belongs_to' }
end
many_association_fields() click to toggle source

@return [Array<String>] a list of many association field names:

- has_many
- has_and_belongs_to_many
# File lib/adapters/wallaby/active_record/model_service_provider/permitter.rb, line 57
def many_association_fields
  association_fields.select { |_, metadata| /many/ =~ metadata[:type] }
end
non_association_fields() click to toggle source

@return [Array<String>] a list of field names that ain't association

# File lib/adapters/wallaby/active_record/model_service_provider/permitter.rb, line 35
def non_association_fields
  @model_decorator.fields.reject { |_, metadata| metadata[:is_association] }
end
non_range_fields() click to toggle source

@return [Array<String>] a list of field names that ain't range

# File lib/adapters/wallaby/active_record/model_service_provider/permitter.rb, line 40
def non_range_fields
  non_association_fields.reject { |_, metadata| /range|point/ =~ metadata[:type] }
end
range_fields() click to toggle source

@return [Array<String>] a list of range field names

# File lib/adapters/wallaby/active_record/model_service_provider/permitter.rb, line 45
def range_fields
  non_association_fields.select { |_, metadata| /range|point/ =~ metadata[:type] }
end