Ruby on Rails的varchar迁移问题

我创build了一个新的表格,包括一个“注释”列。 默认是varchar(255)我相信,但我希望这个列是一个文本区域与字段,并允许更多的数据。 我想我会在ActiveRecord :: Migration文件中做这个改变,但我很好奇格式。 例如,我是否简单地将varchar(255)更改为varchar(1000)? (如果是这样的格式?

def self.up create_table :notes do |t| t.string :note :varchar(1000) end 

这是正确的格式? 此外,我如何获得input字段为多行。 对不起,如果这是简单的东西,但我是编程和RoR的新手。 谢谢。

您可以简单地使用“文本”types而不是“string”。

 def self.up create_table :notes do |t| t.text :note end end 

使用“文本”types将导致types为TEXT的数据库列。 Varchar通常限制在255的最大长度(在MySQL中,其他的RDBMS也有类似的限制)。

如果你使用Rails的表单助手,将会为这个字段输出一个textarea (因为它是'text'types的)。 textarea是接受多行input的表单元素。

编辑:如果您已经迁移了create_table,您可以创build一个新的迁移来更改列types:

 def self.up change_column :notes, :note, :text end 

正确的格式将是

 t.string :note, :limit => 1000 

请确保您使用的是支持长度超过256个字符的变种的MySQL(或任何数据库)版本。

如果你想使用一个大的文本块,它会的

 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 

如果我忽略了:limit => nil选项,那么列types将从varchar更改为文本,但仍具有255个字符的最大长度。