我正在尝试重命名事件表中的列,如下所示:
class RenameScheduleToScheduleIdInEventsTable < ActiveRecord::Migration
def up
rename_column :events, :schedule, :schedule_id
end
def down
rename_column :events, :schedule_id, :schedule
end
end
这是有效的,但我想首先做的是确保迁移不会在将来失败,在我尝试重命名之前检查列schedule_id是否已经存在。我怎样才能通过迁移实现这一目标?
答案 0 :(得分:1)
你可以在up和down方法中使用if else条件。如下所示
class RenameScheduleToScheduleIdInEventsTable < ActiveRecord::Migration
def up
if Event.attribute_names.include? "schedule"
rename_column :events, :schedule, :schedule_id
end
end
def down
if Event.attribute_names.include? "schedule_id"
rename_column :events, :schedule_id, :schedule
end
end
end