我创建了一个新表,其中包含一列"note".我认为默认值是varchar(255),但我希望这个列是一个文本区域,而不是一个字段,并允许更多数据.我想我会在ActiveRecord::Migration文件中做这个更改,但我对格式很好奇.例如,我是否简单地将varchar(255)更改为varchar(1000)?(如果是,格式是什么?

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

这是正确的格式吗?此外,如何将输入字段设置为多行.抱歉,如果这是简单的东西,但我是新的编程和RoR.谢谢

推荐答案

您可以简单地使用"文本"类型而不是"字符串".

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

使用"text"类型将导致数据库列的类型为text.Varchar的最大长度通常限制为255(在MySQL中,其他RDBMS也有类似的限制).

如果使用Rails的表单帮助程序,则此字段将输出textarea(因为它是"text"类型).textarea是接受多行输入的表单元素.

编辑:如果已经迁移了create_表,则可以创建新的迁移来更改列类型:

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

Ruby-on-rails相关问答推荐

如何将Form_With用于多个没有控制器的型号

确定当前太平洋时区是PST还是PDT

创建大哈希的 Ruby 方法

在 POST 请求中添加了 Rails 奇怪的参数

显示每个 rspec 示例的运行时

Rails 5:如何从数据库中删除列?

搭建脚手架时建立关系

指定要从 before_filter 中排除的控制器

Rails 错误:无法批量分配受保护的属性

如何在 rspec 测试中输出变量?

rails structure.sql和schema.rb有什么区别

Rails 3.1 Sprockets 需要指令 - 有没有办法排除特定文件?

在rails中带有内部文本或html的link_to image_tag

rails 单数资源还是复数?

ActiveRecord 事务中的错误处理?

从任何编码强制字符串为 UTF-8

Rails:一次添加多个 flash[:notice] 的简单方法

从模型中获取验证

保存用户偏好的最佳方法?

ruby on rails 如何处理 NaN