LoginSignup
2
0

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-05-13

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]
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0