はじめに
プログラミング初心者が、学習の過程で学んだことを整理してまとめたものです。
ActiveHashとは
基本的に変更されないデータを、モデルファイル内に直接記述することで、データベースに保存せずに、データを取り扱えることができるGemのことです。例えば、都道府県やカテゴリーやジャンルなどを指します。
#使用の仕方
1.ActiveHashを用いたいモデルファイルを作成します。
app/modelsデレクトリの直下にファイルを作成します。 〇〇.rb
2.そのモデルファイルで、クラス定義とActiveHash::Baseクラスの継承をします。
この記載をすることでAvtiveRecordのようなメソッドが使用できるようになります。
3.モデルファイル内にデータの記述します。
データは配列にハッシュで格納します。
{ id: 1, name: '--' },
{ id: 2, name: '月曜日'},
{ id: 3, name: '火曜日'},
{ id: 4, name: '水曜日'}
{ id: 5, name: '木曜日'},
{ id: 6, name: '金曜日'},
{ id: 7, name: '土曜日'},
{ id: 8, name: '日曜日'},
{ id: 9, name: '未定'}
]
end
```
4.このモデルファイルを読込みたい、テーブルにカラムの追加をする。
テーブルの中で、作成したモデル(ActiveHash)の外部キーとして管理することで、テーブル内のデーターに対してActiveHashのデータが紐付きます。
5.作成したモデルのアソシエーションを設定する。
ActiveHasを用いて、belongs_toを設定するには、読込みたいモデルファイル内で、下記の記述をします。
```extend ActiveHash::Associations::ActiveRecordExtensions
belongs_to :作成したモデル名(Active Hashのほう)
6.作成したモデルファイル内でもアソシエーションを設定する。(複数のデータに対して)
データ配列の下に記述します。
has_many :読み込みたい方のモデル名(複数形)
7.バリデーションを設定設定します。
ActiveHashではid:1の記載はデフォルトの'--'になっているため、こちらは使用されないようにします。
*カラム名の1は保存できないと記述です。
8.ビューファイルで呼び出します。
form_withの中にcollection_selectを用いて記述します。これによってプルダウン形式で表示することが出来ます。
``` <%= form_with model: @インスタンス変数, local: true do |f| %>
<%= f.text_field :title, class:"title", placeholder:"タイトル" %>
<%= f.collection_select(:〇〇_id, 〇〇.all, :id, :name, {}, {class:"select"}) %>
*()の中は、(保存されるカラム名,オブジェクトの配列,カラムに保存される項目,選択肢に表示されるカラム名,オプション,HTMLオプション)の順で記述する。
以上でActiveHashを用いる方法です。