class Filtrum::Field
Attributes
alias[RW]
name[RW]
Public Class Methods
new(name, view, options = {})
click to toggle source
# File lib/filtrum/field.rb, line 6 def initialize name, view, options = {}, &block @name, @view = name.to_s, view @alias = options[:as].try :to_s @value_column = options[:value].try :to_s @includes = options[:includes] if options[:order] == false @no_order = true elsif options[:order] @order_column = options[:order].to_s end instance_eval &block if block end
Public Instance Methods
as(name)
click to toggle source
# File lib/filtrum/field.rb, line 26 def as name @alias = name.to_s end
extract(object)
click to toggle source
# File lib/filtrum/field.rb, line 65 def extract object if @value_block @value_block.call object else serialize object.send(@value_column || @name) end end
includes(&block)
click to toggle source
# File lib/filtrum/field.rb, line 42 def includes &block @includes_block = block end
no_order()
click to toggle source
# File lib/filtrum/field.rb, line 34 def no_order @no_order = true end
order(&block)
click to toggle source
# File lib/filtrum/field.rb, line 30 def order &block @order_block = block end
value(&block)
click to toggle source
# File lib/filtrum/field.rb, line 38 def value &block @value_block = block end
with_includes(query)
click to toggle source
# File lib/filtrum/field.rb, line 55 def with_includes query if @includes_block @includes_block.call query elsif @includes query.includes @includes else query end end
with_order(query, direction)
click to toggle source
# File lib/filtrum/field.rb, line 46 def with_order query, direction return if @no_order if @order_block @order_block.call query, direction else query.order "#{model.table_name}.#{@order_column || @name} #{direction}" end end
working_name()
click to toggle source
# File lib/filtrum/field.rb, line 22 def working_name @alias || @name end
Private Instance Methods
model()
click to toggle source
# File lib/filtrum/field.rb, line 75 def model @view.config.model end
serialize(value)
click to toggle source
# File lib/filtrum/field.rb, line 79 def serialize value type_serializer = @view.settings.type_serializers.find{ |s| s.match? value } type_serializer ? type_serializer.serialize(value) : value end