检查前柱的存在是为了将其改名
我想重新命名在我的事件表列如下:检查前柱的存在是为了将其改名
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是否已经存在。我如何通过迁移来完成这项工作?
您可以使用,如果内部上下methods.Like下面
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
是否ActiveRecord的拉动这一信息直接从数据库或应用程序的?由于我已经在脚手架中更改了属性的名称,因此预计将迁移 – EastsideDeveloper
@EastsideDeveloper,它直接从DB获取列名。没有问题。它完美地工作。测试代码 – krishnar
经过测试和验证,谢谢 – EastsideDeveloper
else条件检查我的解决方案 – krishnar