change_column migration删除表

时间:2016-02-14 00:34:18

标签: ruby-on-rails-4 database-migration rails-migrations

我现在已经运行了几次change_column迁移,它删除了我正在尝试进行更改的整个表。

class ChangePictureColumnInProperties < ActiveRecord::Migration
def change
  change_column :properties, :pictures, :json
end
end

然后它会完全删除整个properties表。

我正在尝试设置CarrierWave并且文档说“添加可以存储数组的列”并提供了一个使用JSON的示例,以提供我正在做的事情的上下文。

我是Rails的新手,所以不知道我在这里做错了什么。欣赏任何想法。

1 个答案:

答案 0 :(得分:0)

如果您使用的是SQLite,则需要删除该表并再次创建,SQLite不支持删除,更改类型和重命名列(不删除条目)。

在迁移中,可以执行以下操作:

drop_table :properties
create_table :properties
add_column :properties, :your_previous_columns
add_column :properties, :your_previous_columns
add_column :properties, :pictures, :json

如果您有相关信息,可以创建另一个具有良好结构的表,导入您的信息并删除旧表。

重要! 我不相信json字段是最好的选择,你可以在你的条目和他的图像之间使用“一对多”的关系。

当您需要为您输入图像时,请使用“嵌套表格”。

使用嵌套表单,您可以发送属于您的条目的信息及其嵌套图像。