Lawliet Lawliet
Lawliet Lawliet

Reputation: 58

How to get Rails 4 activerecord insert sql?

I'm trying to get the sql statement of activerecord dynamically. e.g

pen = Pen.new
pen.description = "HB"
pen_sql = pen.insert_sql
puts pen_sql 
=> "Insert into pens (description) values ('HB')"

Upvotes: 2

Views: 300

Answers (1)

endyey Es
endyey Es

Reputation: 509

You create you own method to get the insert statement something like this.

def get_insert_sql(from_dbmodel)
  insert_sql = from_dbmodel.class.arel_table.create_insert.tap do |im|
    im.insert(from_dbmodel.send(:arel_attributes_with_values_for_create, from_dbmodel.attribute_names))
  end.to_sql

  return insert_sql     
end

pen = Pen.new
pen.description = "HB"
pen_sql = get_insert_sql(pen)
puts pen_sql 
=> "Insert into pens (description) values ('HB')"

Tested in rails 4

Upvotes: 1

Related Questions