ActiveHashを解説してみた
ActiveHash
職業選択などの変更されないデータをモデルファイル内に直接記述することで、データベースへ保存せずにデータを取り扱うことができる。つまり、Active_Hashを用いることで、モデルファイルに直接記述した変更されないデータに対して、ActiveRecordのメソッドを用いることができる。
導入方法
Gemfile
gem 'active_hash'
記述したらbundle installを実行する。
モデル作成時に押さえておくべきこと
結論、--skip-migrationを使用すること。
理由は、データベースを作らない。すなわちマイグレーションファイルは不要となるからだ。ここでrails g modelコマンドを使用してしまうと、マイグレーションファイルも同時に作成されてしまうので注意が必要。
% rails g model モデル名 --skip-migration
ActiveHash::Base
ActiveRecordと同様のメソッドが使用できる。
つまり、ActiveHash::Baseを継承することで、モデルに定義したオブジェクトに対してActiveRecordのメソッドが使用できるようになる。
class ShippingFee < ActiveHash::Base
self.data = [
{ id: 0, name: '---' },
{ id: 1, name: '着払い(購入者負担)' }, { id: 2, name: '送料込み(出品者負担)' }
]
end
self.dataでテーブルを作成しているイメージ。データは配列にハッシュ形式で格納されている。
belongs_to_active_hash
通常であればbelongs_to :モデル名となるが、ActiveHashを使って作成したモデルに対してアソシエーションを設定する場合は、belongs_to_active_hashメソッドを使用する。
collection_select
データをプルダウン形式で表示することができるメソッド
記述順 | 詳細 | 具体例 |
---|---|---|
第一引数 | メソッド名 | カラム名 |
第二引数 | オブジェクト | 配列データの指定 |
第三引数 | id | 参照DBのカラム名 |
第四引数 | name | 実際のカラム名 |
第五引数 | prompt | プルダウンで一番上に表示したい内容 |
オプション | クラス名 | -- |
<%= f.collection_select(:shipping_fee_id, Shipping_fee.all, :id, :name, {}, {class:"select-box", id:"item-shipping-fee-status"}) %>
実装例
代表的なものをいくつかあげてみた
・都道府県
・職業選択
・クローズドクエスチョン(yes or noで答えられるようなもの)
・アンケート
・カテゴリー
・商品のステータス
個人的にはこれがあることで利用者側のストレスを大幅に減らすことができ、かつ効率的に情報収集をすることができると感じた。
相手に意見を求めたいときなどに使うといいかもしれない。
最後に
ここまで記事を読んでいただき、ありがとうございました。
普段何気なく使っているものにもActiveHashが取り入れられているのですね。
実装も簡単なので、積極的に使っていきたいと感じました。
今後も学習を進めていく中で、役立つ情報をどんどん発信していきたいと思うので、よろしくお願いします。
ここまで記事を読んでいただき、本当にありがとうございました‼
Author And Source
この問題について(ActiveHashを解説してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/Taisei-rgb/items/f4b0b2501e90fb5063b5著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .