Skip to content

Instantly share code, notes, and snippets.

@MaherSaif
Forked from hopsoft/build_insert_query.rb
Created March 15, 2024 20:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MaherSaif/65c472c042a3f122f5f3d2e57398db26 to your computer and use it in GitHub Desktop.
Save MaherSaif/65c472c042a3f122f5f3d2e57398db26 to your computer and use it in GitHub Desktop.
Get the SQL for an insert statement from ActiveRecord
# Builds an SQL insert query for a given record
#
# @param record [ActiveRecord::Base] Record used to build the SQL insert query
# @return [String] SQL insert query
def build_insert_query(record)
columns = record.class.columns.reject { |col| col.name == record.class.primary_key }
values = columns.map { |col| record[col.name] }
insert_manager = Arel::InsertManager.new
insert_manager.into(record.class.arel_table)
insert_manager.insert(columns.zip(values)).to_sql
end
user = User.new(first_name: "John", last_name: "Doe")
build_insert_sql(user) # => SQL instert query
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment