Sha256: 043984ae47a11d268148527f0af13b980118e35e7c086b4a2e2ae8a1016faf00
Contents?: true
Size: 1.62 KB
Versions: 2
Compression:
Stored size: 1.62 KB
Contents
# -*- encoding : utf-8 -*- module RademadeAdmin module Model module Adapter class Query class ActiveRecord < RademadeAdmin::Model::Adapter::Query protected def where(where_conditions) @values = [] condition = collect_where_conditions(where_conditions) @result.where([condition, *@values]) end def order(order_conditions) order_conditions.parts.each do |part| if part.is_a? RademadeAdmin::Search::Part::Order # todo else @result = @result.order(part[:field] => part[:value]) end end @result end def collect_where_conditions(where_conditions) condition = '' where_conditions.parts.each do |part| condition += " #{where_conditions.type.to_s.capitalize} " unless condition.empty? if part.is_a? RademadeAdmin::Search::Part::Where condition += "(#{collect_where_conditions(part)})" else field = "`#{part[:field]}`" if part[:value].is_a? Regexp # hack temporary fix condition += "#{field} REGEXP ?" part[:value] = part[:value].source elsif part[:value].is_a? Array condition += "#{field} IN (?)" else condition += "#{field} = ?" end @values << part[:value] end end condition end end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rademade_admin-0.1.5 | lib/rademade_admin/model/adapter/query/active_record.rb |
rademade_admin-0.1.4 | lib/rademade_admin/model/adapter/query/active_record.rb |