36 lines
1.3 KiB
Ruby
Executable File
36 lines
1.3 KiB
Ruby
Executable File
class ConvertDocumentToPolymorphicAssociation < ActiveRecord::Migration[7.0]
|
|
def up
|
|
add_column :captain_assistant_responses, :documentable_type, :string
|
|
|
|
# rubocop:disable Rails/SkipsModelValidations
|
|
if ChatwootApp.enterprise?
|
|
Captain::AssistantResponse
|
|
.where
|
|
.not(document_id: nil)
|
|
.update_all(documentable_type: 'Captain::Document')
|
|
end
|
|
# rubocop:enable Rails/SkipsModelValidations
|
|
remove_index :captain_assistant_responses, :document_id if index_exists?(
|
|
:captain_assistant_responses, :document_id
|
|
)
|
|
|
|
rename_column :captain_assistant_responses, :document_id, :documentable_id
|
|
add_index :captain_assistant_responses, [:documentable_id, :documentable_type],
|
|
name: 'idx_cap_asst_resp_on_documentable'
|
|
end
|
|
|
|
def down
|
|
if index_exists?(
|
|
:captain_assistant_responses, [:documentable_id, :documentable_type], name: 'idx_cap_asst_resp_on_documentable'
|
|
)
|
|
remove_index :captain_assistant_responses, name: 'idx_cap_asst_resp_on_documentable'
|
|
end
|
|
|
|
rename_column :captain_assistant_responses, :documentable_id, :document_id
|
|
remove_column :captain_assistant_responses, :documentable_type
|
|
add_index :captain_assistant_responses, :document_id unless index_exists?(
|
|
:captain_assistant_responses, :document_id
|
|
)
|
|
end
|
|
end
|