ActiveModel::ModelとActiveModel::Attributes
code:rb
include ActiveModel::Model
include ActiveModel::Attributes
パRails12章あたりで解説されてる(記憶..?)のやつ。modelでおまじないの用によく定義してpureなruby objectのモデルとして定義したりするけどそれぞれちゃんと説明できるようにしておきたくて機能を改めて言語化しとく。
ActiveModel::Model
主な機能
バリデーション
属性の読み書き
コールバック
変換(翻訳や国際化)のサポート
テストのサポート
これにより、データベースに直接紐付かないモデルオブジェクトを作成できる。フォームオブジェクトや、APIからのデータを扱うオブジェクトなどに適してる。
ActiveModel::Attributes
主な機能
属性の型定義
デフォルト値の設定
属性の型変換
このモジュールを使用することで、モデルの属性をより厳密に定義し、型安全性を高めることが可能。
例
code:rb
class NoraCat
include ActiveModel::Model
include ActiveModel::Attributes
attribute :name, :string
attribute :age, :integer, default: 0
attribute :color, :string
attribute :seen_at, :datetime
end
nora_cat = NoraCat.new(name: 'shiro', age: 3, color: :white, seen_at: Time.now)
リソース