LoginSignup
19
21

More than 5 years have passed since last update.

どうしてもActiveAdminを拡張したいならこの方法を使おう

Last updated at Posted at 2014-02-09

AcitveAdminは管理画面を自動的に作成してくれる便利なライブラリですが、大幅に拡張するには少し手間がかかりすぎてしまいます。

正直はてなブログやNaverまとめのようなイイ感じの管理画面を作りたいなら自作するのが一番いいと思うのですが、初心者なのでgemとかで何とかしたい!という方のためにActiveAdminを拡張するためのソースをまとめてみました。

実際に使ってみて上手く稼動した&比較的使いやすかったgemだけをチョイスしています。

記事の下書き、投稿済み

ActiveAdmin State Machine
READMEにはdraft, preview, publishedの3つの記事の状態の作成方法が掲載されてますが、他の状態も簡単に拡張出来ます。

画像をS3に保存

carrierwave
画像のアップロードは他にもpaperclipなどがありますが、今後他のgemと連携する場合はcarrierwaveを選択するのがオススメです。画像のファイル名とかも簡単に変更できるので、特にファイル名を乱数にしたいといった人は便利。

記事の編集をもっと便利に

CKEditor
ActiveAdminが公式にサポートしているフォームをHTMLに対応させるためのgemです。他にもrichActiveAdmin EditorActiveAdmin WYSI5 Editorなどがあり、比較的後者の方がインストールや設定をしやすかったのですが、Rails4では上手く動かなかったり、carrierwaveとの連携がやりにくかったり、HTMLの編集機能が少なかったりしたのでCKEditorをオススメしました。
CKEditorはActiveAdminのinitializerで設定でき、HTMLの編集機能も豊富です。

ただし機能制限などを行う場合は、config.jsファイルを作成する必要があり、 このconfig.jsの編集方法を理解しないといけないので、HTMLの編集機能はそんなにこだわらない方はあまり使わない方がいいかもしれないです。
もし時間をかけてHTMLの機能制限をしてもいい方は、こちらのサイトを参考にしてみてください。
CKSource - CKEditor Toolbar

メニューを制限する

例えば、カテゴリというモデルを作って、あるemailでログインしてない場合はカテゴリをメニューに表示させたくない場合は、以下のコードをモデルに追加しましょう。

app/models/admin_user.rb
def admin?
  self.email == "your email address"
end
app/admin/category.rb
menu :if => proc{ current_admin_user.admin? }

Admin画面へのURLを変更する

config/initializers/active_admin.rb
ActiveAdmin.setup do |config|
  config.default_namespace = :route_name #route_nameに自分で決めたURLを書く
end
19
21
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
19
21