我是铁杆新手.我注意到在rails 5中生成数据迁移时,有些人会使用rails db:migrate它rake db:migrate.有人可以解释数据库迁移中rails vs rake命令之间的区别吗?是否意味着rake命令在rails 5中已经过时了?
非常感谢
是否有针对所有迁移的快速rake db:rollback命令?
我正在编写我的第一个Rails应用程序.我已经运行了几rails generate model ...和rake db:migrate命令,但现在我想改变我的数据模型,因此需要撤销了一些迁移.
该文档说我可以撤消与迁移rake db:rollback,但是这是行不通的.当我在控制台中运行它时,计算机会想几秒钟,但不会对db/migrate/或进行任何更改db/migrate/schema.rb.没有输出打印到控制台.
这种行为是否正确?不db:rollback应该改变我的架构?如果是这样,有谁能想到为什么它可能不起作用?
我在Rails v.3.2.6上.
编辑
此刻rake db:migrate:status给出了
database: db/development.sqlite3
Status Migration ID Migration Name
--------------------------------------------------
up 20120617191211 Create irs
up 20120701154357 Create paths
up 20120701154421 Create nodes
up 20120702151447 ********** NO FILE **********
down 20120702155140 Create venues
down 20120703233833 Remove path from venues
Run Code Online (Sandbox Code Playgroud) 我刚刚安装了设备,所以除了一个用户(我)之外,表上没有任何数据.
我再次重新做数据库所以我放弃了所有.我做rails g scaffold了6个新的模型和控制器,并做了rake db:migrate
在我的/db/migrate目录中,我有一个带文件名的devise文件20130603211907_devise_create_users.rb
问题出在这里:如果我这样做rake db:migrate:down VERSION=20130603211907,将删除所有新的迁移.
如何在不删除所有较新的迁移的情况下再次运行迁移?
我已经搜索了如何在生产环境中为rails创建数据库并得到了2个答案.现在我对这些答案感到困惑.
RAILS_ENV=production rake db:create db:schema:load
RAILS_ENV=production rake db:create
Run Code Online (Sandbox Code Playgroud)
这两者有什么区别?这个架构意味着什么?
我们为什么需要db:schema:load?
提前致谢.
database schema ruby-on-rails production-environment ruby-on-rails-4
我正在做hartle教程的第12章.我跑的时候遇到bundle exec rake db:seed了这个错误:
ActiveRecord::RecordInvalid: Validation failed: Email has already been taken
Run Code Online (Sandbox Code Playgroud)
我试着跑步
rake db:reset
rake db:migrate
rake db:test:prepare
Run Code Online (Sandbox Code Playgroud)
最后
rake db:populate
Run Code Online (Sandbox Code Playgroud)
但他们没有解决问题.当我运行rake db:populate它时给出:
Don't know how to build task 'db:populate'
Run Code Online (Sandbox Code Playgroud)
这是我的seeds.rb文件:
# Users
User.create!(name: "Example User",
email: "example@railstutorial.org",
password: "foobar",
password_confirmation: "foobar",
admin: true,
activated: true,
activated_at: Time.zone.now)
99.times do |n|
name = Faker::Name.name
email = "example-#{n+1}@railstutorial.org"
password = "password"
User.create!(name: name,
email: email,
password: password,
password_confirmation: password,
activated: true,
activated_at: Time.zone.now)
end
# Microposts …Run Code Online (Sandbox Code Playgroud) 我假设每当rails应用程序需要构建数据库时,它将通过按时间戳顺序遍历所有迁移文件来实现.它是否正确?
还是有其他原因吗?
我正在尝试使用PostgreSQL在Rails中进行数据库迁移,但结果模式不包含任何我的表定义.我没有看到我的语法有什么问题吗?
以下是我运行"rake db:migrate"后我的一个迁移文件和生成的模式文件的示例.
迁移文件:
class Fields < ActiveRecord::Migration[5.2]
def change
def up
create_table :fields do |t|
t.column :totalsalesprsn, :float, :limit => nil, :null => false
t.column :totaladmkspend, :float, :limit => nil, :null => false
t.column :totalsalescost, :float, :limit => nil, :null => false
t.column :miscsales, :float, :limit => nil, :null => false
t.column :numleads, :float, :limit => nil, :null => false
t.column :costleads, :float, :limit => nil, :null => false
t.column :totalsalescost2, :float, :limit => nil, :null => false
t.column …Run Code Online (Sandbox Code Playgroud)