我对 ruby-on-rails 非常陌生。我对耙子有疑问。create
功能是创建一个新的数据库。之后,我们要运行一些命令,例如
rake db:load
rake db:data:load
rake db:schema:load
rake db:migrate
rake db:seed
但是为什么我们要在创建数据库之后运行这个 cmds 以及关于 cmd 的什么功能。
谢谢你的建议。
我对 ruby-on-rails 非常陌生。我对耙子有疑问。create
功能是创建一个新的数据库。之后,我们要运行一些命令,例如
rake db:load
rake db:data:load
rake db:schema:load
rake db:migrate
rake db:seed
但是为什么我们要在创建数据库之后运行这个 cmds 以及关于 cmd 的什么功能。
谢谢你的建议。
您可以使用rake -T
来获取每个任务的描述:
$ rake -T | grep db
rake db:create # Create the database from config/database.yml for the current Rails.env (use db:create:all to create all dbs in the config)
rake db:drop # Drops the database for the current Rails.env (use db:drop:all to drop all databases)
rake db:fixtures:load # Load fixtures into the current environment's database.
rake db:migrate # Migrate the database (options: VERSION=x, VERBOSE=false).
rake db:migrate:status # Display status of migrations
rake db:rollback # Rolls the schema back to the previous version (specify steps w/ STEP=n).
rake db:schema:dump # Create a db/schema.rb file that can be portably used against any DB supported by AR
rake db:schema:load # Load a schema.rb file into the database
rake db:seed # Load the seed data from db/seeds.rb
rake db:setup # Create the database, load the schema, and initialize with the seed data (use db:reset to also drop the db first)
rake db:structure:dump # Dump the database structure to db/structure.sql. Specify another file with DB_STRUCTURE=db/my_structure.sql
rake db:version # Retrieves the current schema version number
我这就是你要问的?
编辑:
您可以在此处阅读有关迁移的更多信息:http: //guides.rubyonrails.org/migrations.html
编辑2:
rake db:migrate
允许您以“理智”的方式更新数据库架构:您可以创建新迁移(阅读指南!)并添加新列,例如添加索引、重命名列等 - 迁移允许您“在“时间”中来回旅行” - 您可以运行迁移并稍后回滚。
生成新迁移时:
$ rails g migration add_new_column_to_some_table
您将能够rake db:migrate
稍后运行以应用您想要的更改(当然您必须编写此生成的迁移的主体)。
我强烈建议您阅读指南:)
编辑 3:
add_column :users, :price, :float
,例如,会将price
列添加到users
表中,列的类型将是float
(float
顺便说一句,存储与金钱相关的东西不是最好的主意!)。此列将NULL
默认为。
编辑4:
有关运行了哪些迁移的信息存储在schema_migrations
表中:第一次运行迁移将在此表中添加一条新记录,其中version
包含此迁移(日期+文件名中的一些随机数)。回滚迁移将删除此记录。运行两次迁移不会产生任何影响。
简而言之,db:migrate 不会破坏数据库中的现有数据。因此,运行迁移和 rake 任务允许您的数据因您所做的更改而存在。
create
是一个空的数据库。db/migrate
db/migrate
文件bundle exec rake db:migrate
. 这会将第二个迁移文件的内容添加到数据库中,并且不会损害现有数据。bundle exec rake db:create:all
bundle exec rails generate scaffold Users name:string email:string
bundle exec rake db:migrate
bundle exec rails s
去localhost:3000/users/new
创建一个新用户。bundle exec rails generate scaffold Posts title:string body:text
bundle exec rake db:migrate
localhost:3000/users
,你应该仍然看到你创建的用户。