Ruby on Rails:模型,迁移和概述

时间:2012-10-29 07:08:53

标签: ruby-on-rails ruby model migration rails-migrations

在我之前使用Django进行Web开发之后,我最近开始使用Ruby on Rails。我发现自己非常喜欢对迁移的强调(关于Django是事后的想法),但我对以下内容有点关注:

  • 在Django中,使用像South这样的库,可以根据您对模型所做的更改自动生成迁移。因此,检查单个文件或目录就足以查看所有模型的当前定义
  • 在Rails,AFAIU,app / models / * .rb中只包含那些模型的方法;这些字段分散在db / migrations中。

我认为在命名迁移文件时可能会受到纪律处分,因此可以找到与给定模型相关的所有迁移,但是,一旦你到达m模型{{1}每次迁移都需要跟踪。

必须有一种方法来检查特定模型的当前状态 - 字段和方法 - 没有苦差事;一位经验丰富的RoR开发人员可以启发我吗?

2 个答案:

答案 0 :(得分:3)

您拥有db/schema.rb文件,其中表达了每个模型的所有字段(以一次大迁移的形式)。

数据(字段)和行为(方法)之间的分离是有意的,并且可以使用库来覆盖它,这些库使用头部注释中最新适用的模式的副本来注释模型

答案 1 :(得分:1)

如果您查看模型文件,您会注意到它们不包含对其属性的引用 - 例如,您的用户可能有电子邮件,但您的用户中没有该文件的跟踪.RB。那是因为它位于schema.rb.

Schema.rb表示在运行rake db:migrate时由数据库中的rails生成的数据库。虽然如果你删除它并不是世界末日 - 运行你的迁移应该(理论上)产生你拥有的schema.rb。但是,迁移是很脆弱的事情(例如,您可能已经添加了新的验证规则,因为最初编写了迁移)因此,您应该schema.rb检入版本控制。

Schema.rb 可以通过运行

加载到空数据库中
rake db:schema:load