discourse/db/migrate/20121204183855_fix_link_post_id.rb
Louis Rose 1574485443 Perform the where(...).first to find_by(...) refactoring.
This refactoring was automated using the command: bundle exec "ruby refactorings/where_dot_first_to_find_by/app.rb"
2014-05-06 14:41:59 +01:00

27 lines
655 B
Ruby

class FixLinkPostId < ActiveRecord::Migration
def up
to_remove = []
TopicLink.where('internal = TRUE AND link_post_id IS NULL').each do |tl|
begin
parsed = URI.parse(tl.url)
route = Rails.application.routes.recognize_path(parsed.path)
if route[:topic_id].present?
post = Post.find_by(topic_id: route[:topic_id], post_number: (route[:post_number] || 1))
tl.update_column(:link_post_id, post.id) if post.present?
end
rescue ActionController::RoutingError
to_remove << tl.id
end
end
TopicLink.delete_all ["id in (?)", to_remove]
end
def down
end
end