Sha256: d5013a91689debb41316400d131d05f29f7dd14b91374db71566dff5eef796ae
Contents?: true
Size: 1.02 KB
Versions: 1
Compression:
Stored size: 1.02 KB
Contents
class ActiveRecordQueryFixer attr_reader :query def self.fix(query) new(query: query).fix.query end def initialize(args) @query = args.fetch(:query) end def fix fix_order_group fix_order_select_distinct self end def fix_order_group return if @query.values[:group].empty? changed = false @query.values[:order].each do |order| next if !order.is_a?(Arel::Nodes::Ascending) && !order.is_a?(Arel::Nodes::Descending) @query = @query.group("#{order.expr.relation.right}.#{order.expr.name}") changed = true end self end def fix_order_select_distinct return unless @query.values[:distinct] changed = false @query.values[:order].each do |order| next if !order.is_a?(Arel::Nodes::Ascending) && !order.is_a?(Arel::Nodes::Descending) @query = @query.select("#{order.expr.relation.right}.#{order.expr.name}") changed = true end @query = @query.select("#{@query.table_name}.*") if changed self end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
active_record_query_fixer-0.0.0 | lib/active_record_query_fixer.rb |