• 应使用 rake db:scheme:load 而不是 rake db:migrate 来初始化空数据库。

  • 虽然许多 Rails 开发者建议在 Rails 中强制使用表的默认值,但这会使数据受到许多应用 bug 的影响,因而导致应用极其难以维护。考虑到大多数有一定规模的 Rails 应用都与其它应用共享数据库,保持应用的数据完整性几乎是不可能的。

  • 书写建设性的迁移(添加表或列)时,应使用 change 方法而不是 updown 方法。

    1. # 老式写法
    2. add_column :people, :name, :string
    3. end
    4. def down
    5. remove_column :people, :name
    6. end
    7. # 新式写法(更好)
    8. class AddNameToPeople < ActiveRecord::Migration
    9. def change
    10. add_column :people, :name, :string
    11. end