はじめに
CSVインポート機能の追加くらいで、ほぼ素のままのrails_adminを今まで使ってきていました。
それを最近しみじみ見て、大事そうでもない情報が上の方にあったり、使いそうもないリレーションがところどころに挟まっていたり…使いにくく感じました。
順番を変えるだけでも運用でミスが減るだろうと思い、少しやってみました。
ソース
やっていないこと
項目の非表示はしていません。
rails_adminをどのように運用で使っているのかわからないので、項目の非表示などをして混乱させてもよくないと思ったためでした。
また、表示するものを減らしたい、というような要求が出てきたときには、rails_adminで創意工夫を凝らすより、素直に編集画面を作るようにしようと思っています。
こんなふうになります
↓のように、body
、title
、user_id
の順で定義されたArticle
モデルがあるとします。
ActiveRecord::Schema.define(version: 2020_08_15_021803) do
create_table "articles", force: :cascade do |t|
t.text "body"
t.string "title"
t.integer "user_id", null: false
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.index ["user_id"], name: "index_articles_on_user_id"
end
# :
# : (省略)
これをrails_adminで見ると↓のようにbody
、title
、user
の順で表示されます。
↓のような設定ファイルによって…
preffered_fields:
article:
- user
- title
user
、title
、body
の順で表示できるようにします。
やったこと
上の方に置きたいフィールドをおきにいり
ということにして、同一ディレクトリ内に置いたYAMLファイルから読みます。おきにいりフィールドを#field
を使って設定し、残りは#include_all_fields
でまとめて設定しています。
RailsAdmin.config do |config|
# :
# : (省略)
# :
# モデルの表示順制御
settings = YAML.load_file(Rails.root.join('config/initializers/rails_admin.yml'))
settings['preffered_fields'].each do |model_name, preffered_fields|
config.model model_name do
preffered_fields.each do |field_name|
field field_name.to_sym
end
include_all_fields
end
end
# :
# : (省略)
# :
end
おわりに
rails_adminをマジマジとみて、かなり使いやすいのと、置き換えでrails_admin相当の便利な入力・編集フォームを作ろうとすると、結構大変だぞ…と思いました。
直近の不便を解消する程度のことはしてもよいと思いましたが、あれこれがんばって工夫する前に、工夫をしたくなったところから徐々に自前で作ったフォームに置き換えていきたいと思っています…。