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