1

以前は Web 開発に Django を使用していましたが、最近、Ruby on Rails を使い始めました。私は移行に重点を置いていることを非常に気に入っていますが(Djangoでは後付けです)、次のことを少し心配しています:

  • Django では、South のようなライブラリを使用して、モデルに加えた変更から移行が自動的に生成されます。したがって、すべてのモデルの現在の定義を確認するには、1 つのファイルまたはディレクトリを調べるだけで十分です。
  • Rails では、AFAIU の app/models/*.rb には、これらのモデルのメソッドのみが含まれます。フィールドは db/migration 全体に散らばっています。

移行ファイルに名前を付ける際に訓練を受けることができると思います。そのため、特定のモデルに関連するすべての移行を見つけることは可能ですが、それでも、たとえば、それぞれに移行があるmモデルに到達すると、n追跡することがたくさんあります.

特定のモデル (フィールドとメソッドの両方) の現在の状態を面倒な作業なしで検査する方法が必要です。経験豊富な RoR 開発者が教えてくれませんか?

4

2 に答える 2

3

db/schema.rb各モデルのすべてのフィールドが (1 つの大きな移行の形式で) 表現されているファイルがあります。

データ (フィールド) と動作 (メソッド) の分離は意図的なものであり、ヘッド コメント内の適用可能な最新のスキーマのコピーでモデルに注釈を付けるライブラリを使用してオーバーライドできます。

于 2012-10-29T07:11:28.327 に答える
1

モデル ファイルを見ると、プロパティへの参照が含まれていないことがわかります。たとえば、User には電子メールが届いている可能性がありますが、User.rb にはその痕跡がありません。それはそれが存在するからですschema.rb.

Schema.rbrake db:migrate を実行したときにデータベースから rails によって生成されたデータベースの表現です。削除しても世界の終わりではありませんが、移行を実行すると (理論的には) が発生するはずschema.rbです。ただし、移行は脆弱なものです (たとえば、移行が最初に作成された後に新しい検証ルールを追加した可能性があります)。そのため、schema.rbバージョン管理をチェックインする必要があります。

Schema.rbは、実行することで空のデータベースにロードできます。

rake db:schema:load
于 2012-10-29T07:18:57.340 に答える