Есть ли кто-нибудь, кто может мне помочь, определив точную разницу между Active Model, Active Record и Active Resource. Я достаточно погуглил, чтобы найти точную разницу, но не получил ничего конкретного, что могло бы указать точную разницу между ними. Сейчас они все кажутся мне одинаковыми. Поэтому, пожалуйста, дайте мне соответствующий ответ с некоторыми конкретными моментами.
Разница между активной моделью, активной записью и активным ресурсом
Ответы (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... откуда вы это услышали?)
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
.
- person David Moles; 27.01.2021
Что я понимаю:
ActiveModel + поддержка базы данных = ActiveRecord
ActiveModel через WebService API = AcitveResource
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