3

「主要なCRUDメソッドに関しては、関係はモデルのように偽ります」と読んだことがあります。

Relationがすべての作業を行わないのはなぜですか。Baseをインスタンス化してからRelationを返すことのポイントは何ですか。これは、明らかに懸念事項を共有しています。

4

1 に答える 1

1

Rails 3では、データベースの動作がさまざまなミックスインに分割されていました。そうすれば、ActiveRecord::Baseから継承しなくても検証を行うことができます。ActiveRecord :: Baseクラスは、データベース操作を行うために必要なすべてのミックスインを取り込みます。

さらに、リレーションは実際にはレコードまたはレコードセットではありません。クエリの芽のままである可​​能性があるため、チェーン内の何かがレコードまたはレコードセットを返すまでチェーンすることができます。

したがって、whereメソッドはRelationオブジェクトを返します。そのオブジェクトは、クエリ内の別のフィルターを使用して別のRelationオブジェクトを返す場所を呼び出すことができます。そして、メソッドall、first、countなどが呼び出されて、返されるオブジェクトがクエリの結果になるまで続きます。

于 2012-09-21T15:38:54.127 に答える