高木のブログ

Railsでテーブルを作るほどでもないなと思ったデータはActiveHashで作る

2019/06/08

静的データだからテーブル作るのはめんどくさいけど、ActiveRecordのように扱いたいって時にはactive_hashというGemが便利

https://github.com/zilkey/active_hash

使い方

gem 'active_hash'
class Category < ActiveHash::Base
  self.data = [
    { 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
irb(main):001:0> Category.all.each do |category|
irb(main):002:1* puts category.name
irb(main):003:1> end
総合
一般
世の中
政治と経済
暮らし
学び
テクノロジー
おもしろ
エンタメ

ちゃんとActiveRecordのメソッドそれなりに使えたりする。

irb(main):005:0> Category.find(1)
# => #<Category:0x00005616a45ef658 @attributes={:id=>1, :name=>"総合"}>

irb(main):007:0> Category.where(name: '暮らし')
# => [#<Category:0x00005616a45ee9d8 @attributes={:id=>5, :name=>"暮らし"}>]

irb(main):010:0> Category.last.name
# => "エンタメ"

試してないけどActiveHash、ActiveRecord間でリレーションも貼れるらしい。


Pixela