1

Railsの初心者です。

私が目にするほとんどのコード サンプルの非常に先端的な部分の背後にある理論を理解するのを手伝ってくれませんか? 「The ActiveRecord::Base」、「Application Controller」、「ActionController::Base」の部分は?

  1. この3つを何と呼びますか?それらはすべてオブジェクトですか?クラス?

  2. 「class X < ActiveRecord::Base」はモデルでオブジェクトを作成することであり、「class ApplicationController < ActionController::Base」はコントローラーでオブジェクトを作成することであると理解しています...オブジェクトを作成するための同様のものはありますかView では、MVC の 3 つのコンポーネントすべてを丸めるだけですか?

4

3 に答える 3

1

ActiveRecord::BaseApplicationControllerおよびActionController::Baseすべてのクラスです。オブジェクトを取得するには、そのうちの 1 つのインスタンスを作成する必要がありますが、それを行うことはありません。代わりに、それらを拡張して新しいサブクラスを作成し、それらのインスタンスを作成します。

ビューの基本クラスがあると思いますが、通常の使用では決して表示されません。通常、ビュークラスではなくビューテンプレートを作成するため、フレームワークのそのセクションで Ruby クラスを扱うことはありません。

于 2013-01-08T00:58:47.023 に答える
1

それはすべて正確であるため、すでに述べたことに追加します。

「class X < ActiveRecord::Base」はモデルでオブジェクトを作成することであり、「class ApplicationController < ActionController::Base」はコントローラーでオブジェクトを作成することであると理解しています...オブジェクトを作成するための同様のものはありますかView では、MVC の 3 つのコンポーネントすべてを丸めるだけですか?

これは正しい道をたどっていますが、意味上の違いがいくつかあります。

class User < ActiveRecord::BaseActiveRecord::Base のサブクラスを作成するだけです。何かをするまではUser.create()、そのクラスのインスタンスを取得します。これは、オブジェクトと呼ばれることもあります。

サブクラスは、親を持つクラスの特別な言葉です。ruby では、かなり紛らわしいことに、クラスはすべて Object クラスのサブクラスであることを覚えているかもしれません。

また、ActiveRecord::Base をサブクラス化することは、モデル内にオブジェクトを作成することと考えるべきではありません。代わりに、サブクラスをモデルの記述 (通常は保存したいデータ) と考えてください。 すべてのサブクラスはモデルそのものです。それはすべてセマンティクスですが、理解に役立つ場合があります。

コントローラーも同様です。コントローラーにオブジェクトを作成するのではなく、コントローラーの新しい説明を作成します。その説明は、インスタンス化されるまで実際には具体的ではありません.レールでは、あなたまたはユーザーがアプリケーションからページを要求すると自動的に発生します.

最後に、ActionView::Base と呼ばれるトリオを締めくくるクラスがあります。Rails は、コントローラーで を呼び出すと、自動的に作成さrenderれます。

于 2013-01-08T02:58:46.583 に答える
0

ActiveRecord::Base 、ActionController::Base は、MVC ベースのクラスです。ただし、これらのクラスを拡張せずにモデルまたはコントローラーを作成すると、クラスによって提供される機能がなくなります。

ただし、ビューでは、通常、ビューでオブジェクトまたはモデルを作成する人はいません。これにより、コードの可読性と保守性が確実に向上します。よりクリーンなコードが表示されます。さらに、 index.rb のような特定のビューでは、実際にはコントローラーに接続されており、コントローラーで初期化するオブジェクト インスタンスを取得し、それを使用してデータをビューに表示できます。

于 2013-01-08T01:04:44.180 に答える