アクティブなモデル、アクティブなレコード、アクティブなリソースの正確な違いを定義することで私を助けることができる人はいますか? 正確な違いを見つけるために十分なグーグル検索を行いましたが、それらの間の正確な違いを伝えることができる具体的なものは何も得られませんでした. 今のところ、それらはすべて同じように見えます。ですので、具体的なポイントを含めて適切な回答をお願いします。
3 に答える
Rails 3 は、モジュール性を考慮して設計されています。各モジュールには、独自の目的と機能があります。
ActiveModel : このコンポーネントは Rails 3 で作成されました。Rails 2 ActiveRecord のデータベース要件を持たないモデル関連のすべての部分を取り、ActiveModel に移動しました。したがって、ActiveModel には検証などが含まれます。詳細: http://www.rubyinside.com/rails-3-0s-activemodel-how-to-give-ruby-classes-some-activerecord-magic-2937.html
ActiveRecord : これは、クラスをデータベースに関連付けるコンポーネントです。これにより、データベースからレコードを簡単に取得できるメソッドなどのクラス機能が提供されます (例は find メソッドです)。
ActiveResource : ActiveRecord に似ています。ただし、ActiveResource オブジェクトは、データベースによってサポートされるのではなく、Web サービス API を介して別のアプリケーションによってサポートされます。詳細: http://ofps.oreilly.com/titles/9780596521424/activeresource_id59243.html
(ActiveBase について理解できませんでした...どこから聞いたのですか?)
私が理解していること:
ActiveModel + データベース サポート = ActiveRecord
WebService API 経由の ActiveModel = ActiveResource
アクティブモデル https://github.com/rails/rails/tree/master/activemodel
常に検証が必要なスーパーモデルを考えてみてください。
ActiveModel は多くの用途に使用できますが、主にモデル/データベース レコードに検証サポートを追加することで認識されています。
アクティブレコード https://github.com/rails/rails/tree/master/activerecord
レコードはテーブル レコードのように考えてください。
新しいクラスとデータベース内の既存のテーブルとの間のマッピングを設定します。
アプリのコンテキストでは、これらのクラスは一般にモデルと呼ばれます。モデルを他のモデルに接続することもできます。これは、関連付けを定義することによって行われます。
class Firm < ActiveRecord::Base
has_many :clients
has_one :account
belongs_to :conglomerate
end
バックグラウンドでは、Rails は ActiveRecord を使用してスキーマ管理とレコードのプロパティを定義し、ORM (オブジェクト リレーショナル マッパー) として機能します。
「ORM:データベース テーブルまたはビューで行をラップし、データベース アクセスをカプセル化し、そのデータにドメイン ロジックを追加するオブジェクト。」
スキーマは、レコードのプロパティの概要を示します。
ActiveResource https://github.com/rails/activeresource
リソースは、URL の R や、多くの Rails バックエンドを強化するリソースルーティングのようなものだと考えてください。
HTTP 経由で作成、取得、更新、または破棄(CRUD)などを実行できます。
tyler = Person.find(1)
リソース ルートに対してリクエストが行われると、RESTful リクエストは、対応する HTTP 動詞とそれらのデータベース インタラクションを自身にマッピングします。
GET => Person.find(1)
POST => Person.new(:name => 'Tyler', :favorite_page => 'stackoverflow')
PUT => tyler.save
DELETE => tyler.destroy