0

我对 ruby​​-on-rails 非常陌生。我对耙子有疑问。create功能是创建一个新的数据库。之后,我们要运行一些命令,例如

rake db:load
rake db:data:load
rake db:schema:load
rake db:migrate
rake db:seed

但是为什么我们要在创建数据库之后运行这个 cmds 以及关于 cmd 的什么功能。

谢谢你的建议。

4

2 回答 2

2

您可以使用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表中,列的类型将是floatfloat顺便说一句,存储与金钱相关的东西不是最好的主意!)。此列将NULL默认为。

编辑4:

有关运行了哪些迁移的信息存储在schema_migrations表中:第一次运行迁移将在此表中添加一条新记录,其中version包含此迁移(日期+文件名中的一些随机数)。回滚迁移将删除此记录。运行两次迁移不会产生任何影响。

于 2012-12-08T13:25:04.117 回答
1

简而言之,db:migrate 不会破坏数据库中的现有数据。因此,运行迁移和 rake 任务允许您的数据因您所做的更改而存在。

文字工作流程

  1. create是一个空的数据库。
  2. 您需要将第一个模型的数据表添加到数据库中。这是通过在db/migrate
  3. 现在您需要第二个模型,因此您创建模型并编辑为您创建的迁移db/migrate文件
  4. 在不破坏任何现有数据的情况下更新数据库的最简单方法是运行bundle exec rake db:migrate. 这会将第二个迁移文件的内容添加到数据库中,并且不会损害现有数据。

创建项目后的示例工作流程:

  1. bundle exec rake db:create:all
  2. bundle exec rails generate scaffold Users name:string email:string
  3. bundle exec rake db:migrate
  4. 在这个阶段,bundle exec rails slocalhost:3000/users/new创建一个新用户。
  5. bundle exec rails generate scaffold Posts title:string body:text
  6. bundle exec rake db:migrate
  7. 回到你的浏览器去localhost:3000/users,你应该仍然看到你创建的用户。
于 2012-12-08T14:31:36.540 回答