Jer*_*ker 99

如果您之前在迁移中指定了限制并希望仅删除限制,则可以执行以下操作:

change_column :users, :column, :string, :limit => 255
Run Code Online (Sandbox Code Playgroud)

255是字符串列的标准长度,rails只会消除您之前指定的限制.

更新:

虽然这适用于许多Rails版本,但您可能更适合nil在Giuseppe的答案中使用.

change_column :users, :column, :string, :limit => nil
Run Code Online (Sandbox Code Playgroud)

这意味着你唯一错误的就是使用null而不是nil.


Giu*_*ppe 34

这是发生在我身上的事.

我意识到我在表中的字符串字段不足以保存其内容,因此我生成了一个包含以下内容的迁移:

def self.up
  change_column :articles, :author_list, :text
end
Run Code Online (Sandbox Code Playgroud)

但是,在运行迁移之后,架构具有:

create_table "articles", :force => true do |t|
  t.string   "title"
  t.text     "author_list", :limit => 255
end
Run Code Online (Sandbox Code Playgroud)

哪个不行.那么我按照以下方式"重新"迁移迁移:

def self.up
  # careful, it's "nil", not "null"
  change_column :articles, :author_list, :text, :limit => nil
end
Run Code Online (Sandbox Code Playgroud)

这一次,schema.rb中的限制消失了:

create_table "articles", :force => true do |t|
  t.string   "title"
  t.text     "author_list"
end
Run Code Online (Sandbox Code Playgroud)