Ait*_*lez 3 ruby mysql ruby-on-rails
我想知道是否需要在 Ruby on Rails 中运行迁移才能使模型正常工作。
我真的很喜欢使用 MySQL Workbench 设计数据库,它提供了一个导出选项,可以在之后轻松创建数据库,所以我想知道从 Rails“迁移”数据库是否真的对模型产生了一些影响,比如让他们知道表存在或类似的东西那。
我问这个是因为当我运行时,rake db:migrate会在文件夹中创建一个新文件db:schema.rb其中包含数据库的信息。
作为附加信息,我正在使用这些版本:
谢谢。
Rails 不会强迫您使用迁移。如果您没有定义迁移,而是以其他方式定义数据库,那么一切仍然可以正常工作。
如果您定义了迁移,那么 Rails 将跟踪它们是否已运行(一个新的数据库表,schema_migrations实际上是在您第一次运行迁移时由 Rails 为此创建的),如果没有运行则会抱怨运行它们。如果您不打算使用迁移,则 db/migrations 中不要有任何内容。
您仍然可以schema.rb从现有数据库生成一个,只需运行bundle exec rake db:schema:dump即可。但是正在运行的 Rails 应用程序不会使用 schema.rb 文件,如果您没有,Rails 也可以正常工作schema.rb。AR 模型通过在应用程序启动时从数据库获取有关数据库表的信息,而不是从 schema.rb 获取它。但是 schema.rb 很有用,可以在新数据库中重新创建模式(即使您不使用迁移,但转储 schema.rb 也可以执行此操作,您仍然可以使用它来重新创建相同的模式) )。
迁移确实很有用,大多数 Rails 开发人员都喜欢它们。它们可以有效地让您跟踪 git 控制的源代码中数据库架构的更改,并轻松回滚或前进到其他数据库架构时间点。您还可以使用迁移来实际修改数据,而不仅仅是架构,并且仍然准确记录您在迁移中为修改/迁移数据所做的操作。如果多个开发人员正在协作编写代码,则迁移尤其(但不仅)有用,因为您可以更轻松地合并架构更改,因为它们在源代码中作为迁移进行跟踪。
迁移生成的架构更改还会为您处理一些 Rails 约定,例如默认创建名为 的主键id,如果您要求创建标准 Rails Updated_at 或created_at 列。
但如果您不想使用迁移,也不必这样做,Rails 会非常高兴。
| 归档时间: |
|
| 查看次数: |
1125 次 |
| 最近记录: |