对于Ruby on Rails的VARCHAR迁移问题
-
12-09-2019 - |
题
我已经创建了一个新的表包括列“注释”。默认为varchar(255)我相信,但我希望有此列是一个文本面积与一个字段,允许更多的数据。我想,我会做出的ActiveRecord ::迁移文件,这个改变,但我很好奇,以格式。我简单地改变为varchar(255)为varchar(1000),例如? (如果是的话是什么格式?
def self.up
create_table :notes do |t|
t.string :note :varchar(1000)
end
是正确的格式?此外,我如何才能输入字段是多行。很抱歉,如果这是简单的东西,但我是新来的编程和回报率。谢谢。
解决方案
可以简单地使用,而不是“字符串”的“文本”类型。
def self.up
create_table :notes do |t|
t.text :note
end
end
使用“文本”类型将导致类型TEXT的数据库列。 VARCHAR通常限于的最大长度255(在MySQL,其他RDBMS具有相似的限制)。
如果您使用Rails的形式帮手,一个 textarea的将是本领域的输出(因为它是类型‘文本’)。 textarea的是接受多行输入的形式的元素。
编辑:如果您已经迁移的CREATE_TABLE,您可以创建一个新的迁移更改列类型:
def self.up
change_column :notes, :note, :text
end
其他提示
正确的格式将是
t.string :note, :limit => 1000
请确保您使用的MySQL版本(或任何数据库),它支持VARCHAR处理超过256个字符的。
如果你想使用一个大的文本块,这将是
t.text :note
请参阅 http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters /TableDefinition.html 了解详情
可以与限制选项,以便改变它的长度...
def self.up
change_column :notes, :note, :string, :limit => 1000
end
由于我有很多数据的已存储余使用
self.up
change_column :notes, :note, :text, :limit => nil
end
如果我停止的:极限=>零选项则列型会从varchar到文本改变,但它仍然有255个字符最大长度
不隶属于 StackOverflow