为 :text 修改脚手架 :string

Modify scaffold :string for :text

我有一个脚手架,但它失败了,因为用户的文本比字符串允许的要长。所以我想更改数据类型,rails g scaffold Dreams Dream:stringDreams:text, 有可能吗?

如果您已经迁移,请撤消它:

rake db:rollback
rails destroy scaffold Dreams Dream:string

然后重做

rails generate scaffold Dreams Dream:text
rake db:migrate

如果您刚刚生成了脚手架,则不需要制作 rake db:rollbackrake db:migrate

如果这不是您最后一次迁移,您可以通过以下方式撤消它:

rake db:migrate:down VERSION=<version>
# version is the number of your migration file you want to revert

您可以创建一个新的迁移:

rails generate migration change_dream_type_in_dreams

并打开迁移以使用 change_column

def self.up
  change_column :dreams, :dream, :text
end

def self.down
  change_column :dreams, :dream, :string
end

最后,rake db:migrate

首先,脚手架应该是像User这样的单数名词,在你的情况下,应该是Dream,Rails不允许Dreams,除非你传递 --force-plural 选项。

其次,列名也应该是单数,虽然它可以是复数,但rails一般的惯例是使用单数列名。

是的,你是对的!

rails g scaffold Dream dream:text

text 是您正在寻找的选项。如果您不使用 dream 指定任何内容,Rails 会将其视为 string