mirror of
https://github.com/activerecord-hackery/ransack.git
synced 2022-11-09 13:47:45 -05:00
1abf8f6086
since Rails 3.x stills supports Ruby 1.8.7 as per http://guides.rubyonrails.org/v3.2.17/getting_started.html: “Ruby language version 1.8.7 or higher.”
24 lines
599 B
Ruby
24 lines
599 B
Ruby
module Ransack
|
|
class Ransacker
|
|
|
|
attr_reader :name, :type, :formatter, :args
|
|
|
|
delegate :call, :to => :@callable
|
|
|
|
def initialize(klass, name, opts = {}, &block)
|
|
@klass, @name = klass, name
|
|
|
|
@type = opts[:type] || :string
|
|
@args = opts[:args] || [:parent]
|
|
@formatter = opts[:formatter]
|
|
@callable = opts[:callable] || block ||
|
|
(@klass.method(name) if @klass.respond_to?(name)) ||
|
|
proc { |parent| parent.table[name] }
|
|
end
|
|
|
|
def attr_from(bindable)
|
|
call(*args.map { |arg| bindable.send(arg) })
|
|
end
|
|
|
|
end
|
|
end
|