アクティブモデル、アクティブレコード、アクティブリソースの正確な違いを定義することで私を助けてくれる人はいますか?私は正確な違いを見つけるために十分なグーグルを行いましたが、それらの間の正確な違いを知ることができる具体的なものは何もありませんでした。今のところ、それらはすべて私には同じに見えます。ですから、具体的なポイントを付けて適切な答えを出してください。
Rails 3はモジュール性を考慮して設計されています。各モジュールには独自の目的と機能があります。
ActiveModel:このコンポーネントはRails 3.で作成されました。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 = AcitveResource
ActiveModelhttps://github.com/Rails/rails/tree/master/activemodel
スーパーモデルが常に検証を必要としていると考えてください。
ActiveModelは多くの目的に使用できますが、ほとんどの場合、モデル/データベースレコードに検証サポートを追加することで認識されています。
ActiveRecordhttps://github.com/Rails/rails/tree/master/activerecord
recordをテーブルレコードのように考えます。
新しいクラスとデータベース内の既存のテーブルとの間のマッピングを設定します。
アプリのコンテキストでは、これらのクラスは一般にモデルと呼ばれます。モデルは他のモデルに接続することもできます。これは関連を定義することによって行われます。
class Firm < ActiveRecord::Base
has_many :clients
has_one :account
belongs_to :conglomerate
end
バックグラウンドで、Railsは、スキーマ管理およびレコードのプロパティの定義にActiveRecordを使用し、ORM(オブジェクトリレーショナルマッパー)として機能します):
「ORM:データベーステーブルまたはビューの行をラップし、データベースアクセスをカプセル化し、そのデータにドメインロジックを追加するオブジェクト。」
スキーマは、レコードのプロパティの概要を示します。
ActiveResourcehttps://github.com/Rails/activeresource
resourceをURLのRのように、またはresource routingのように考えて、多くのRailsバックエンド。
[〜#〜] c [〜#〜]reate、[〜#〜のようなことができます] r [〜#〜]etrieve、[〜#〜] u [〜#〜]pdate、または[〜#〜] d [〜#〜]破棄(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