例えば性別で、DBのカラムに0, 1とかで入ってるけど、表示時に男性、女性などと表示させたい場合の方法。
本来なら:enum
だけで良くない?って思ったけど、他にも記述する必要がありました。
config
ja.ymlは以下だという前提。
ja.yml
ja:
gender:
- '男性'
- '女性'
config/initializers/rails_admin.rb
を編集すると色々カスタマイズできます。
以下はあくまで例
config/initializers/rails_admin.rb
RailsAdmin.config do |config|
<略>
config.model 'User' do
# いじらない項目についても書いておかないと省かれてしまうので列挙
field :id
field :email
# :enumを書くことで新規作成時などにプルダウンで選択できて便利
field :gender, :enum do
# 表示用の設定
# valueには表示項目の値が入ってくる(この場合は0 or 1)
# nameにはfieldの名前が入ってくる(この場合はgemder)
pretty_value do
I18n.t(name)[value] if value
end
# csvなどでエクスポートするときの設定
export_value do
I18n.t(name)[value] if value
end
enum do
I18n.t(name)
end
end
# 今回のenumの話とは関係無けど誕生日と一緒に年齢を表示する方法
field :birth_date do
pretty_value do
age = Time.now.year - value.year
"#{value.strftime("%Y-%m-%d")} (#{age}才)"
end
export_value do
age = Time.now.year - value.year
"#{value.strftime("%Y-%m-%d")} (#{age}才)"
end
end
end
end
もっとスマートな方法があったら教えて欲しいです。例えばja.ymlのどこかに書くだけでいいとか。。。
参考
https://github.com/sferik/rails_admin/wiki/Railsadmin-DSL#search_word=enum
https://github.com/sferik/rails_admin/wiki/Enumeration