class Generators::Simple

Public Instance Methods

generate() click to toggle source
# File lib/toschas/filterable/generators/simple.rb, line 3
def generate
  filters.each do |filter|
    model.define_singleton_method(
      "by_#{filter}", 
      ->(value) { send(:where, { filter => value }) }
    )

    generate_range_filter(filter) if table_loaded? && range_filter?(filter)
  end
end

Private Instance Methods

generate_range_filter(filter) click to toggle source
# File lib/toschas/filterable/generators/simple.rb, line 23
def generate_range_filter(filter)
  model.define_singleton_method(
    "from_#{filter}", 
    ->(value) { send(:where, "#{filter} > ?", value) }
  )

  model.define_singleton_method(
    "to_#{filter}", 
    ->(value) { send(:where, "#{filter} < ?", value) }
  )
end
range_filter?(filter) click to toggle source
# File lib/toschas/filterable/generators/simple.rb, line 16
def range_filter?(filter)
  range_types.include?(
    model.to_s.classify.constantize
    .type_for_attribute(filter.to_s).type
  )
end