Railsガイドにきちんと目を通して新しい知識を得る - Active Model の基礎編 -

ドキュメントを読み込むのは大事、ということでRailsガイドを頭から読んでいく取り組みをしています。 各章ごとに、(Railsガイドにちゃんと書いてあるのに)知らなかった機能を雑にまとめていきます。

今回は、Active Model の基礎の章です。

railsguides.jp

AttributeMethodsモジュール

リンクはこちら

prefixやsuffixのメソッドを定義できる機能等を提供しているモジュールのようです。
_changed?みたいなメソッドもこのモジュールを使って実現しているみたいですね。

module ActiveModel
  module Dirty
    included do
      attribute_method_suffix "_previously_changed?", "_changed?", parameters: "**options"
      ...
    end
end

ActiveModel::Model

リンクはこちら

railsソースコードを見てみたら、ActiveModel::ModelでincludeしているActiveModel::APIが色々と必要なモジュールを読み込んでいる仕組みでした。

module ActiveModel
  module Model
    extend ActiveSupport::Concern
    include ActiveModel::API
  end
  ...
end
# frozen_string_literal: true

module ActiveModel
  module API
    extend ActiveSupport::Concern
    include ActiveModel::AttributeAssignment
    include ActiveModel::Validations
    include ActiveModel::Conversion

    included do
      extend ActiveModel::Naming
      extend ActiveModel::Translation
    end
end

ActiveModel::Serializers::JSON

リンクはこちら

from_jsonという使い方は知らなかったです。

json = { content: 'hoge' }
memo = Memo.new
memo.from_json(json)
#<Memo:0x000000010af35150 id: nil, content: "hoge", user_id: nil, created_at: nil, updated_at: nil>