Yep, there are violating records

This commit is contained in:
Raphael Sofaer 2011-03-30 16:18:57 -07:00
parent 1ba4ece23c
commit 597e71c216

View file

@ -1,5 +1,32 @@
class PmForeignKeys < ActiveRecord::Migration
def self.delete_disconnected_cvs
execute <<SQL
DELETE conversation_visibilities FROM conversation_visibilities
LEFT OUTER JOIN conversations ON conversation_visibilities.conversation_id = conversations.id
LEFT OUTER JOIN people ON conversation_visibilities.person_id = people.id
WHERE people.id IS NULL OR conversations.id IS NULL
SQL
end
def self.delete_disconnected_messages
execute <<SQL
DELETE messages FROM messages
LEFT OUTER JOIN conversations ON messages.conversation_id = conversations.id
LEFT OUTER JOIN people ON messages.author_id = people.id
WHERE people.id IS NULL OR conversations.id IS NULL
SQL
end
def self.delete_disconnected_conversations
execute <<SQL
DELETE conversations FROM conversations
LEFT OUTER JOIN people ON conversations.author_id = people.id
WHERE people.id IS NULL
SQL
end
def self.up
delete_disconnected_conversations
delete_disconnected_messages
delete_disconnected_cvs
add_foreign_key :conversation_visibilities, :conversations, :dependent => :delete
add_foreign_key :conversation_visibilities, :people, :dependent => :delete