我在模型生成的迁移文件中创建了新字段“ first_name”,“ last_name”,“ email”和“ password”,如下所示:
class CreateUsers < ActiveRecord::Migration[5.2]
def up
create_table :users do |t|
#added fields
t.string "first_name", :limit => 25
t.string "last_name", :limit => 50
t.string "email", :default => '', :null => false
t.string "password", :limit => 40
t.timestamps
end
end
def down
drop_table :users
end
end
但是,一旦我显示了字段,在这种情况下就是“用户”
mysql> SHOW FIELDS FROM users;
它应该returns this table,但它也应该返回first_name,last_name,email和密码。
此外,schema.rb文件还排除了这些。
我不知道为什么它没有实现这些领域。我对Rails还是很陌生,并且感谢有关标题编辑的建议,以更好地适应我的情况,因为我不确定术语是否正确。谢谢!
答案 0 :(得分:0)
您一定错过了运行迁移的过程。
从项目的根目录运行此cmd
bundle exec rails db:migrate # for rails 5
或
bundle exec rake db:migrate
答案 1 :(得分:0)
从共享的描述中看来,首先您已迁移了没有该列的表,然后您必须在迁移文件中添加了这些列。
因此,当您将表迁移到数据库时,这些列在迁移文件中不存在,因此您需要按照以下提到的过程来克服这种情况:
1)使用
检查迁移状态e
create_users迁移必须具有版本号
2)现在使用以下命令进行向下迁移:
rake db:migrate:status
3)重复步骤1,结果应该是create_users迁移现在已停止。
4)现在使用
rake db:migrate:down VERSION="version_number_of_the_create_users_migration"
5)现在检查schema.rb,它应该具有这些字段。