基礎このガイドでは、モデルクラスを使用して作業を開始するのに必要なことをすべて解説します。Recordモデルとやりとりすることができます。作成してRailsフレームワークの外で使用することもできます。Packライブラリとやりとりする必要のあるフレームワークで使用されます。Modelは、クラスで使用する既知の一連のインターフェイスを提供します。そのうちのいくつかについて以下で説明します。AttributeMethodsモジュールActiveModel::AttributeMethodsモジュールは、クラスのメソッドにカスタムのプレフィックスやサフィックスを追加できます。このモジュールを使用するには、プレフィックスまたはサフィックスを定義し、オブジェクト内にあるプレフィックス/サフィックスの追加対象となるメソッドを指定します。Recordスタイルのコールバックを提供します。これにより、必要なタイミングで実行されるコールバックを定義することができるようになります。beforeとafterの両方)にラップすることができます。このメソッドは、before_updateコールバックで定義されているとおり、updateメソッドがオブジェクトに対して呼び出される直前に呼び出される。Conversionモジュールクラスでpersisted?メソッドとidメソッドが定義されていれば、このActiveModel::ConversionモジュールをインクルードしてRailsの変換メソッドをそのクラスのオブジェクトに対して呼び出すことができます。(dirty)」状態です。ActiveModel::Dirtyモジュールを使うと、オブジェクトで変更が生じたかどうかを検出できます。属性名に基づいたアクセサメソッドも使えます。first_name属性とlast_nameを持つPersonというクラスを例に考えてみましょう。属性名に基づいたアクセサメソッド特定の属性が変更されたかどうかを検出します。trueその属性の直前の値を返します。nil変更された属性の、直前の値と現在の値を両方返します。変更があった場合は配列を返し、変更がなかった場合はnilを返します。Recordスタイルで検証できます。NamingモジュールActiveModel::Namingは、命名やルーティングの管理を支援するクラスメソッドを多数追加します。このモジュールが定義するmodel_nameクラスメソッドは、ActiveSupport::Inflectorメソッドの一部を用いて多くのアクセサを定義します。Viewと連携する機能をすぐに使えるようになります。endendActiveModel::Modelをincludeすると、以下のような機能を使えるようになります。Recordの場合と同じような方法で、オブジェクトを属性のハッシュで初期化することもできるようになります。Viewヘルパーメソッドを使えるようになりま。シリアライズActiveModel::Serializationは、オブジェクトに基本的なシリアライズ機能を提供します。シリアライズの対象となる属性を含む属性ハッシュを1つ宣言する必要があります。属性は文字列でなければならず、シンボルは使えません。endend上のようにすることで、serializable_hashを使ってオブジェクトのシリアライズ化ハッシュにアクセスできるようになります。Modelは、JSONシリアライズ/デシリアライズ用のActiveModel::Serializers::JSONモジュールも提供しています。このモジュールは前述のActiveModel::Serializationモジュールを自動でincludeします。ActiveModel::Serializers::JSONincludeするモジュールをActiveModel::SerializationからActiveModel::Serializers::JSONに変更するだけでActiveModel::Serializers::JSONを使えるようになります。endendserializable_hashと似ているas_jsonメソッドは、モデルを表現するハッシュ形式を提供します。{"name"=>"Bob"}JSON文字列を元にモデルの属性を定義することもできます。そのクラスにattributes=メソッドを定義しておく必要があります。endend上のようにすることで、Personのインスタンスを作成してfrom_jsonで属性を設定できるようになります。TranslationモジュールActiveModel::Translationは、オブジェクトとRails国際化(i18n)フレームワーク間の統合機能を提供します。ActiveModel::Translationendhuman_attribute_nameメソッドを使って属性名を人間にとって読みやすい形式に変換できます。人間が読むための形式は独自のロケールファイルで定義します。APIに準拠しているかどうかをテストできます。Packと協調するためにAPIをすべて実装することが要求されているわけではありません。このモジュールは、すぐに使える機能をすべて揃えておきたい場合のガイダンスを提供することを意図しているに過ぎません。SecurePasswordモジュールActiveModel::SecurePasswordは、任意のパスワードを暗号化して安全に保存する手段を提供します。このモジュールをincludeすると、バリデーション機能を備えたpasswordアクセサを定義するhas_secure_passwordクラスメソッドがデフォルトで提供されます。gemに依存しているので、ActiveModel::SecurePasswordを正しく使うにはこのgemをGemfileに含める必要があります。モジュールが機能するには、モデルにpassword_digestという名前のアクセサがなくてはなりません。has_secure_passwordはpasswordアクセサに以下のバリデーションを追加します。Railsガイドを、もっと便利に。本サービスで得られた売上はRailsガイドを継続的に更新・運営するために活用させていただきます。管理・公開されております。出して頂けると嬉しいです。:)本ガイドの品質向上に向けて、皆さまのご協力が得られれば嬉しいです。株式会社https://yasslab.jp/支援・協賛Railsガイドは下記のサポーターから継続的な支援を受けています。までお問い合わせください。ライセンスに基づいて公開されています。よる登録商標で、すべての権利を有しています。