Reputation: 58
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
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