class ActiveRecord::PgGenerateSeries::SqlBuilder
SQL builder using PostgreSQL GENERATE_SERIES function.
Public Class Methods
new(ar_class, first, last, step, seq_name)
click to toggle source
# File lib/active_record/pg_generate_series/sql_builder.rb, line 12 def initialize(ar_class, first, last, step, seq_name) @ar_class = ar_class @first = first @last = last @step = step @seq_name = seq_name @select_items = {} ar_class.column_names.each do |col| define_singleton_method "#{col}=" do |val| @select_items[col] = val end end end
Public Instance Methods
to_sql()
click to toggle source
# File lib/active_record/pg_generate_series/sql_builder.rb, line 27 def to_sql <<EOS INSERT INTO #{quoted_table_name} (#{@select_items.keys.map { |col| connection.quote_column_name(col) }.join(',')}) SELECT #{@select_items.values.map { |val| val.is_a?(Raw) ? val.str : connection.quote(val) }.join(",\n ")} FROM GENERATE_SERIES(#{@first.to_i}, #{@last.to_i}, #{@step.to_i}) AS #{connection.quote_column_name(@seq_name)} ; EOS end
Private Instance Methods
raw(str)
click to toggle source
# File lib/active_record/pg_generate_series/sql_builder.rb, line 50 def raw(str) Raw.new(str) end