class Engine2::TypeAheadAction

Public Instance Methods

case_insensitive() click to toggle source
# File lib/engine2/action/decode.rb, line 86
def case_insensitive
    @case_insensitive = true
end
get_case_insensitive() click to toggle source
# File lib/engine2/action/decode.rb, line 82
def get_case_insensitive
    @case_insensitive
end
get_limit() click to toggle source
# File lib/engine2/action/decode.rb, line 78
def get_limit
    @limit
end
invoke(handler) click to toggle source
# File lib/engine2/action/decode.rb, line 94
def invoke handler
    model = assets[:model]
    if query = handler.params[:query]
        fields = @meta[:decode_fields] || static.meta[:decode_fields]

        entries = if query.to_s.empty?
            get_query
        else
            table_name = model.table_name
            condition = fields.map{|f|table_name.q(f).like("%#{query}%", case_insensitive: @case_insensitive || static.get_case_insensitive)}.reduce{|q, f| q | f}
            get_query.where(condition)
        end.limit(@limit || static.get_limit).load_all

        {entries: entries}
    else
        handler.permit id = handler.params[:id]
        record = get_query.unordered.load Hash[model.primary_keys_qualified.zip(split_keys(id))]
        # handler.halt_not_found(LOCS[:no_entry]) unless record
        {entry: record}
    end
end
limit(lmt) click to toggle source
# File lib/engine2/action/decode.rb, line 74
def limit lmt
    @limit = lmt
end
order(*fields) click to toggle source
# File lib/engine2/action/decode.rb, line 90
def order *fields
    @query = get_query.order *fields
end
pre_run() click to toggle source
Calls superclass method Engine2::DecodeAction#pre_run
# File lib/engine2/action/decode.rb, line 69
def pre_run
    super
    @limit = 10
end