From a4de927a2800e0fc739460cee5a71e58d09d25f9 Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Thu, 16 Apr 2009 20:47:18 +0000 Subject: [PATCH 1/1] Handle differences in interval constant formatting. --- db/migrate/025_add_end_time_to_changesets.rb | 4 ++-- lib/migrate.rb | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/db/migrate/025_add_end_time_to_changesets.rb b/db/migrate/025_add_end_time_to_changesets.rb index b87ce3fde..4941b72b9 100644 --- a/db/migrate/025_add_end_time_to_changesets.rb +++ b/db/migrate/025_add_end_time_to_changesets.rb @@ -7,8 +7,8 @@ class AddEndTimeToChangesets < ActiveRecord::Migration # it appears that execute will only accept string arguments, so # this is an ugly, ugly hack to get some sort of mysql/postgres # independence. now i have to go wash my brain with bleach. - execute("update changesets set closed_at=(now()-'1 hour') where open=(1=0)") - execute("update changesets set closed_at=(now()+'1 hour') where open=(1=1)") + execute("update changesets set closed_at=(now()-#{interval_constant('1 hour')}) where open=(1=0)") + execute("update changesets set closed_at=(now()+#{interval_constant('1 hour')}) where open=(1=1)") # remove the open column as it is unnecessary now and denormalises # the table. diff --git a/lib/migrate.rb b/lib/migrate.rb index 488c6d3d2..392060b60 100644 --- a/lib/migrate.rb +++ b/lib/migrate.rb @@ -98,6 +98,10 @@ module ActiveRecord def alter_primary_key(table_name, new_columns) execute("alter table #{table_name} drop primary key, add primary key (#{new_columns.join(',')})") end + + def interval_constant(interval) + "'#{interval}'" + end end class PostgreSQLAdapter @@ -150,6 +154,10 @@ module ActiveRecord def alter_primary_key(table_name, new_columns) execute "alter table #{table_name} drop constraint #{table_name}_pkey; alter table #{table_name} add primary key (#{new_columns.join(',')})" end + + def interval_constant(interval) + "'#{interval}'::interval" + end end end end -- 2.43.2