ActiveHashについて

ActiveHashとは、都道府県名などの変更されないデータをモデルファイル内に直接記述することで、データベースへ保存せずにデータを取り扱うことができるRailsのgem。

ActiveRecordと同様の機能を提供するが、データベースに依存しないモデルを作成するためのライブラリ。データベースを使用せずに、モデルとして扱うデータをアプリケーション内に持つことができるため、データベースに依存しないアプリケーションを構築する際に便利。

ActiveHashのGitHub


ActiveHash::Base

ActiveHash::Baseは、あるモデル内(クラス内)でActiveHashを用いる際に必要となるクラス。ActiveHashのGemに定義されている。
また、ActiveHash::Baseを継承することで、ActiveRecordと同じようなメソッドを使用できるようになる。

module

moduleとは、特定の役割を持つメソッドや定数に名前を付けてまとめたもの。moduleはどんなオブジェクトにも取り込んで使うことが可能。複数のクラスにまたがるメソッドや定数をmoduleとしてまとめることで、コードの肥大化を防いだり、複数クラスの特徴を継承させたいクラスを作成するときに利用する。メソッドをまとめているもの、取り込んで使用する。

ActiveHashに定義されているmodule


アソシエーションの設定

ActiveHashを用いて、has_manyを設定するには、
include ActiveHash::Associationsと記述してmoduleを取り込む

例)  
include ActiveHash::Associations
  has_many :articles

ActiveHashを用いて、belongs_toを設定するには、
extend ActiveHash::Associations::ActiveRecordExtensionsと記述してmoduleを取り込む

例)
class Article < ApplicationRecord
  extend ActiveHash::Associations::ActiveRecordExtensions
  belongs_to :genre
end

ActiveHashを用いたアソシエーションの設定について詳しく

numericality (ニューメリカリティ)

numericalityとは、数値かどうかを検証するバリデーションの一種。
数値であればデータベースに保存を許可して、それ以外では保存が許可されないようにできる。


collection_select

collection_selectとは、モデルのデータと連携してセレクトボックスを表示できるメソッド。このメソッドを使用することで、セレクトボックスのメニューに表示する項目を、テーブルやアクティブハッシュを用いて定義することが可能。

<%= form.collection_select(保存されるカラム名, オブジェクトの配列, カラムに保存される項目, 選択肢に表示されるカラム名, オプション, htmlオプション) %>
各引数に対応する値と役割
  • 第五引数で、ビュー側で{include_blank: "---"}というオプションを指定する場合もある

  • 第一〜第四引数は必ず設定する必要がある


テーブルの数を無駄に増やさない為に、扱うデータが基本的に変更されないものである場合は、ActiveHashを活用すること。


この記事が気に入ったらサポートをしてみませんか?