Sha256: edaeae480249b06c0a85a9122f7d6a6a8f2b0fba8792ee1876c31147fbcd35d3
Contents?: true
Size: 992 Bytes
Versions: 9
Compression:
Stored size: 992 Bytes
Contents
# frozen_string_literal: true require "active_record/relation" module Heya module ActiveRecordRelationExtension TABLE_REGEXP = /heya_steps/ def build_arel(aliases = nil) arel = super(aliases) if table_name == "heya_campaign_memberships" && arel.to_sql =~ TABLE_REGEXP # https://www.postgresql.org/docs/9.4/queries-values.html values = Heya .campaigns.reduce([]) { |steps, campaign| steps | campaign.steps } .map { |step| ActiveRecord::Base.sanitize_sql_array( ["(?, ?)", step.gid, step.wait.to_i] ) } if values.any? arel.with( Arel::Nodes::As.new( Arel::Table.new(:heya_steps), Arel::Nodes::SqlLiteral.new("(SELECT * FROM (VALUES #{values.join(", ")}) AS heya_steps (gid,wait))") ) ) end end arel end end ActiveRecord::Relation.prepend(ActiveRecordRelationExtension) end
Version data entries
9 entries across 9 versions & 1 rubygems