ActiveHashについて
ActiveHashとは、都道府県名などの変更されないデータをモデルファイル内に直接記述することで、データベースへ保存せずにデータを取り扱うことができるRailsのgem。
ActiveRecordと同様の機能を提供するが、データベースに依存しないモデルを作成するためのライブラリ。データベースを使用せずに、モデルとして扱うデータをアプリケーション内に持つことができるため、データベースに依存しないアプリケーションを構築する際に便利。
ActiveHash::Base
ActiveHash::Baseは、あるモデル内(クラス内)でActiveHashを用いる際に必要となるクラス。ActiveHashのGemに定義されている。
また、ActiveHash::Baseを継承することで、ActiveRecordと同じようなメソッドを使用できるようになる。
module
moduleとは、特定の役割を持つメソッドや定数に名前を付けてまとめたもの。moduleはどんなオブジェクトにも取り込んで使うことが可能。複数のクラスにまたがるメソッドや定数を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を活用すること。
この記事が気に入ったらサポートをしてみませんか?