管理画面GemのAdministrateを使って管理画面を作るその1

とある案件で管理画面を作る機会があったのでAdministrateを使ってみたことを書いてみる。

Howでいろいろ書きたいがそうすると長くなるのでまずは雑感。

インストールはいろんなところで書かれているしそういうのは本家の「Getting Started」みてもらえれば一番だ。だけど、そこから先の運用だったりカスタマイズの方法って書いてなくて、「Administrateいれた。簡単にできちゃいました。みなさんもよかったら使ってね」で終わる記事がほとんどだ。

とりあえずAdministrate使うならこれ覚悟しておけっていうのと、まあ使った身として雑感として感じたことを書いていく。

雑感

「使うのは簡単だがカスタマイズも簡単」という評判は間違ってない。

間違ってないが「カスタマイズ」のhowが本家もそんな言及しているところがなかったり、generateしたerbがバグってたりしてその辺の心構えがある前提で使わないとハマる、

「簡単だが情報を手に入れられないくせに自由度が高い」と言えばいいだろうか。howを知るといい選択肢にはなると思う。

How

デフォルトでできることとかはQiitaとかの「いれてみた」系をみてもらえればいいので言及はしない。

日本語対応

ja.ymlで対応できる。ただし書き方が一部冗長になり、他とは違う形になる。さらに一部はja,ymlでは日本語化できない。リレーションするフォームのラベルの日本語化は知らないとわからないと思う。

config/routesのresourcesを参照しながら管理画面の文字列を決めていくので全体的に日本語がダサい。それはviewを作成して自分でやっていくことになる。

検索機能

デフォルトでついているけど使いづらい。一つのフォームがあるだけだ。

一つのフォームに延々と文字を打ち込んでいくとそれを元に絞り込んでくれるけど、本家のissueに「かっこいいUIが開発者以外の人にわかるとはかぎらないんだぞ!」っていう苦情が入ってた、

viewをgenerateすることですげ替えることができる。

index / show とフォームの項目

app/dashboard/[モデル名].rbで対応可能。このdashboardというファイルがすべてといってもいい。これをいじっていろいろ決めていく。フォームの形とかもここで決める。公式で書かれているが不親切。

フォームでデフォルトで使われているdate型を操作するjsがメンテ切れているのを使ってるので、少し不安ではある。

model

作る順番としてはテーブル構成 -> model -> Administrateインストールの方が作りやすいと思う。

設定ファイルをgenerateしてくれるときにリレーションまで気を使ってくれるからだ。フォームもそれにならってくれる。基本的にリレーションとバリデーションしかみないので、こいつ専用の機能でFat Modelになっていかないのはありがたい。viewとcontrollerはいくらでも消せるが、Model消すことはできないからね。

認証

大人しくdeviceつかうのが一番だ。

テーブル分けておけばそんな汚れないし、便利機能もapplication_contollerに書けばいいので困らない。

認可

やってないのでわからんがこういうの要望が出始めたら別なアプローチがいい気がする。

複数管理画面

作ることはできるしつかってもいいがDashboardファイルとModelは共通なので同じリソースをパスを区切って使うのはあまり得策じゃない気がした。

こう言うのだいたいガッチリフォームの項目とか変えたいもんだが、共通にしちゃうと二つとも変わるのは頂けない。

dashboardファイルが複数つくれたらいいのにと思ったが使えなかった。

なんかいい感じのCSSフレームワーク

ヘッダーをかけるのでそこで追記するのが手っ取り早い。

デフォルトのCSSを編集してもいいが、generateしたものがバグってるのでお勧めしない。headerにcdnで配布してるのを書く。だいたいのCSSフレームワークはこれで対応できるはずだ。

まとめ

世の中の「インストール&デフォルト表示ができた」記事ではわからないことがいっぱい。

長くなったのでhowは別記事にする。