diaspora/db/migrate/20111023230730_fix_photo_share_visibilities.rb

40 lines
1.1 KiB
Ruby

class FixPhotoShareVisibilities < ActiveRecord::Migration
class Photo < ActiveRecord::Base; end
def self.up
return if ! Photo.first.respond_to?(:tmp_old_id)
if postgres?
['aspect_visibilities', 'share_visibilities'].each do |vis_table|
execute "UPDATE #{vis_table} SET shareable_type = 'Post'"
execute %{
UPDATE
#{vis_table}
SET
shareable_type = 'Photo'
, shareable_id = photos.id
FROM
photos
WHERE
#{vis_table}.shareable_id = photos.tmp_old_id
}
end
else
['aspect_visibilities', 'share_visibilities'].each do |vis_table|
ActiveRecord::Base.connection.execute <<SQL
UPDATE #{vis_table}
SET shareable_type='Post'
SQL
ActiveRecord::Base.connection.execute <<SQL
UPDATE #{vis_table}, photos
SET #{vis_table}.shareable_type='Photo', #{vis_table}.shareable_id=photos.id
WHERE #{vis_table}.shareable_id=photos.tmp_old_id
SQL
end
end
end
def self.down
end
end