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个字符的最大长度。