67

有没有人可以通过定义 Active Model、Active Record 和 Active Resource 之间的确切区别来帮助我。我已经做了足够的谷歌搜索以找到确切的区别,但没有得到任何具体的东西可以说明它们之间的确切区别。现在他们在我看来都一样。所以请给我一些具体点的适当答案。

4

3 回答 3

101

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 ......你从哪里听到的?)

于 2012-10-07T01:54:54.890 回答
17

我的理解:

ActiveModel + 数据库支持 = ActiveRecord

通过 WebService API 的 ActiveModel = ActiveResource

于 2013-12-13T11:02:58.853 回答
8

ActiveModel https://github.com/rails/rails/tree/master/activemodel

想想一个不断需要验证的超级模特。

ActiveModel 可用于许多事情,但主要用于向模型/数据库记录添加验证支持。


ActiveRecord 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:在数据库表或视图中包装一行、封装数据库访问并在该数据上添加域逻辑的对象。”

架构概述了记录的属性。


活动资​​源 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
于 2014-10-10T01:30:40.177 回答