有没有人能够帮助我定义Active Model、Active Record和Active Resource之间的确切区别呢?我已经做了足够的谷歌搜索,但没有找到任何确切的东西,可以告诉我它们之间的确切区别。目前它们看起来都一样。请给我一个适当的答案,并提供一些具体的要点。
有没有人能够帮助我定义Active Model、Active Record和Active Resource之间的确切区别呢?我已经做了足够的谷歌搜索,但没有找到任何确切的东西,可以告诉我它们之间的确切区别。目前它们看起来都一样。请给我一个适当的答案,并提供一些具体的要点。
Rails 3是以模块化为设计思想的。每个模块都有其特定的目的和功能。
ActiveModel: 这个组件在Rails 3中创建。他们将Rails 2 ActiveRecord没有数据库要求的所有与model相关的部分移动到了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
通过 Web 服务 API 使用 ActiveModel = ActiveResource
ActiveModel https://github.com/rails/rails/tree/master/activemodel
想象一下一个需要不断验证的超级模型。
ActiveModel 可以用于许多事情,但最常用于为模型/数据库记录添加验证支持。
ActiveRecord https://github.com/rails/rails/tree/master/activerecord
将一个新类和数据库中的现有表之间建立映射关系。这里的“record”指的是表记录。
在应用程序中,这些类通常被称为模型。模型也可以与其他模型连接;这可以通过定义关联来实现。
class Firm < ActiveRecord::Base
has_many :clients
has_one :account
belongs_to :conglomerate
end
模式概述了记录的属性。“ORM:将数据库表或视图中的行包装在对象中,封装数据库访问,并在该数据上添加领域逻辑。”
ActiveResource https://github.com/rails/activeresource
将资源看作 URL 中的 R 或驱动许多 Rails 后端的资源路由。
允许您通过 HTTP 进行Create、Retrieve、Update 或 Destroy(CRUD)等操作。
tyler = Person.find(1)
GET => Person.find(1)
POST => Person.new(:name => 'Tyler', :favorite_page => 'stackoverflow')
PUT => tyler.save
DELETE => tyler.destroy
ActiveRecord::Base
(至少在Rails 6.0.3.2中)包含了所有ActiveModel
子模块,包括ActiveModel::Model
所包含的--AttributeAssignment
,Conversion
,ForbiddenAttributesProtection
,Model
,Validations
,Validations::HelperMethods
-- 还有更多:AttributeMethods
,Dirty
,SecurePassword
,Serialization
,Serializers::JSON
,Validations::Callbacks
。 - David Moles