Разница между активной моделью, активной записью и активным ресурсом

Есть ли кто-нибудь, кто может мне помочь, определив точную разницу между Active Model, Active Record и Active Resource. Я достаточно погуглил, чтобы найти точную разницу, но не получил ничего конкретного, что могло бы указать точную разницу между ними. Сейчас они все кажутся мне одинаковыми. Поэтому, пожалуйста, дайте мне соответствующий ответ с некоторыми конкретными моментами.


person Arif Usman    schedule 29.09.2012    source источник


Ответы (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 поддерживается другим приложением через API веб-службы. Дополнительная информация: http://ofps.oreilly.com/titles/9780596521424/activeresource_id59243.html

(Не мог понять про ActiveBase... откуда вы это услышали?)

person richardaday    schedule 07.10.2012
comment
Спасибо, Richardaday, за такой четкий ответ. Извините за неправильное слово ActiveBase.. его ActiveRecord::Base. Можете ли вы просто сказать мне, что это такое? Я знаю, что Active Record наследуется от него, но каково фактическое использование ActiveRecord::Base. Пожалуйста, скажите мне, также пришлите мне ссылку для подробного ответа, если это возможно. - person Arif Usman; 09.10.2012
comment
ActiveRecord::Base — это ActiveRecord. Я думаю, вас может смутить синтаксис ActiveRecord::Base: ActiveRecord — это модуль, объединяющий несколько классов, реализующих его функциональность (примером класса может быть Base). ruby-doc.org/docs/ProgrammingRuby/html/tut_modules.html и api.rubyonrails.org/classes/ActiveRecord/Base.html - person richardaday; 10.10.2012
comment
Ссылка O'Reilly больше не связана с тем, что она делала изначально. - person Dennis; 03.02.2015
comment
вот заархивированная ссылка О'Рейли. - person yagni; 11.08.2015
comment
Пожалуйста, добавьте ActiveRelationship в этот ответ. - person Anshul Riyal; 15.02.2020
comment
Обратите внимание, что ActiveRecord::Base (по крайней мере, начиная с Rails 6.0.3.2) включает в себя все ActiveModel подмодули, которые включает ActiveModel::ModelAttributeAssignment, Conversion, ForbiddenAttributesProtection, Model, Validations, Validations::HelperMethods — и больше, кроме: AttributeMethods, Dirty, SecurePassword, Serialization, Serializers::JSON , Validations::Callbacks. - person David Moles; 27.01.2021

Что я понимаю:

ActiveModel + поддержка базы данных = ActiveRecord

ActiveModel через WebService API = AcitveResource

person Pengyu Zhao    schedule 13.12.2013

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

В фоновом режиме rails использует ActiveRecord для управления схемой и определения свойств ваших записей, действуя как ORM (реляционное сопоставление объектов):

«ORM: объект, который упаковывает строку в таблицу или представление базы данных, инкапсулирует доступ к базе данных и добавляет логику домена к этим данным».

Схема описывает свойства записи.


ActiveResource https://github.com/rails/activeresource

Думайте о ресурсе как R в URL или о маршрутизации ресурсов, которая обеспечивает работу многих бэкэндов rails.

Позволяет выполнять такие действия, как Ссоздавать, извлекатьизвлекать, удалятьдату или удалять (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
person lfender6445    schedule 10.10.2014