是否有人可以通过定义Active Model,Active Record和Active Resource之间的确切区别来帮助我。我已经做了足够的谷歌搜索,以找到确切的差异,但没有得到任何具体可以告诉他们之间的确切差异。现在他们看起来都和我一样。所以请给我一些具体的答案。
答案 0 :(得分:75)
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 ......你从哪里听到的?)
答案 1 :(得分:10)
我的理解:
ActiveModel +数据库支持= ActiveRecord
ActiveModel通过WebService API = AcitveResource
答案 2 :(得分:6)
ActiveModel https://github.com/rails/rails/tree/master/activemodel
想想一直需要验证的超级模特。
ActiveModel可以用于很多方面,但主要用于为模型/ db记录添加验证支持。
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(对象关系映射器):
&#34; ORM:在数据库表或视图中包装行的对象,封装 数据库访问,并在该数据上添加域逻辑。&#34;
架构概述了记录的属性。
ActiveResource https://github.com/rails/activeresource
将资源视为URL中的R或资源路由,为许多rails后端提供支持。
允许您执行 C reate, R etrieve, U pdate或 D estroy( CRUD)通过HTTP。
tyler = Person.find(1)
当请求资源路由时,RESTful请求会自己映射其相应的HTTP谓词及其数据库交互
GET => Person.find(1)
POST => Person.new(:name => 'Tyler', :favorite_page => 'stackoverflow')
PUT => tyler.save
DELETE => tyler.destroy