Sha256: f4a75ee23c0d8b0248096541ea184f360be00656543c3cb0c62ed881357847cc
Contents?: true
Size: 986 Bytes
Versions: 2
Compression:
Stored size: 986 Bytes
Contents
# frozen_string_literal: true require "active_record/relation" module Heya module ActiveRecordRelationExtension TABLE_REGEXP = /heya_steps/ def build_arel(aliases) 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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
heya-0.5.0 | lib/heya/active_record_extension.rb |
heya-0.4.0 | lib/heya/active_record_extension.rb |