RailsAdmin で enum を使うときの決まり文句を無くしたい

RailsAdminEnumConfigurable を作った経緯

RailsAdmin いいですよね。開発初期あるいはリリース後も管理画面まで手が回らないときは重宝します。

しかし enum を使うときだけはどうも面倒で,

class User < ApplicationRecord 
  enum status: { active: 1, supended: 2, deleted: 3 }

  def status_enum
    { active: 1, supended: 2, deleted: 3 }
    # self.class.statuses とするとより dry
  end
end

というように, xxx_enum というメソッドを定義してあげないと正しく動きません (ドキュメントにもそう書いてあるし,なんでそうなっているかは該当コードを読むのが一番早い)。

enum を使う度にこれを毎回やるのは不毛なので,このメソッド定義をよろしくやってくれる gem を作りました。その名も RailsAdminEnumConfigurable。 concern として作っているので,

class User < ApplicationRecord
  include RailsAdminEnumConfigurable

  enum status: { active: 1, supended: 2, deleted: 3 }
end

とするだけです。

class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true
  include RailsAdminEnumConfigurable
end

というように親に読み込ませてしまえば各モデルの変更すら不要です。

同じ苦悩をお持ちの方はぜひ使われてみてください。
https://rubygems.org/gems/rails_admin_enum_configurable

蛇足

enum を使っているカラム一覧を取得できるメソッドも付いてきます (使うケース全くなさそうですが...)。

User.enum_attributes # => [:status]
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.