RoR scaffold在脚本/生成后添加字段

Tho*_*ggi 2 mysql ruby-on-rails

我生成了一个脚手架并输入了类型:value但现在我需要添加另一个字段/ db列,如何添加另一个类型:value而不破坏并重新启动我的整个项目?

rake aborted!
Mysql::Error: You have an error in your SQL syntax; check the manual that corres
ponds to your MySQL server version for the right syntax to use near '(11), `titl
e` varchar(255) DEFAULT NULL, `artist_old` varchar(255) DEFAULT NULL,' at line 1
: CREATE TABLE `albums` (`id` int(11) DEFAULT NULL auto_increment PRIMARY KEY(11
), `title` varchar(255) DEFAULT NULL, `artist_old` varchar(255) DEFAULT NULL, `r
elease_date` datetime DEFAULT NULL, `genre` varchar(255) DEFAULT NULL, `feature`
 int(11) DEFAULT NULL, `image_path` varchar(255) DEFAULT NULL, `created_at` date
time DEFAULT NULL, `updated_at` datetime DEFAULT NULL, `artist_id` int(11) DEFAU
LT NULL) ENGINE=InnoDB
Run Code Online (Sandbox Code Playgroud)

小智 5

通常当您使用scaffold命令时,它将在您的db/migrate/文件夹中创建一个迁移,其中包含您的模型的所有数据库设置,例如:

class CreateComments < ActiveRecord::Migration
  def self.up
    create_table :comments do |t|
      t.text :body
    end
  end

  def self.down
    drop_table :comments
  end
end
Run Code Online (Sandbox Code Playgroud)

如果rake db:migrate在创建脚手架后未成功运行该命令,则可以轻松编辑下面的迁移文件,db/migrate/并在开头添加您错过的字段.编辑文件后,运行rake db:migrate命令以将迁移应用于数据库.

如果您rake db:migrate在创建脚手架后已经介入,则可以创建新的迁移,script/generate migration AddSubjectColumnToComments以便向表中添加另一个字段.在上面的示例中,我将获得一个新的迁移并填写以下代码:

class AddSubjectColumnToComments < ActiveRecord::Migration
  def self.up
    add_column :subject, :comments, :string
  end

  def self.down
    remove_column :subject, :comments
  end
Run Code Online (Sandbox Code Playgroud)

祝你好运!