Help us understand the problem. What is going on with this article?

初学者のメモ Rails_adminの導入方法(日本語化)

初めに

ポートフィリオを作成する際、管理者側機能を実装するの面倒に感じたので管理者側はgemを使用することにしました。
管理者機能を持つgemは複数ありますが、今回は『Rails_admin』の導入しましたので、記録を残したいと思います。

環境

・Ruby '2.3.8'
・Rails '5.2.3'

gemの導入(devise編)

Gemfile
gem 'devise'
$ bundle install
$ rails g devise:install
$ rails g devise user
$ rails db:migrate
$ rails g devise:views users

以上でdeviseの導入は完了です。

gemの導入(rails_admin編)

Gemfile
gem 'rails_admin', '~> 2.0.0.beta'
$ bundle install
$ rails g rails_admin:install
?  Where do you want to mount rails_admin? Press <enter> for [admin]> 
$ admin

rails routesで/adminが生成されていることを確認します。
rails s後、生成されたURLを入力すると表示されます。

gemの導入(cancancan編)

Gemfile
gem 'cancancan'
$ bundle install

以上で必要gemの導入は完了です。

管理者権限の設定

  1. cancancanでabilityを生成します
$ rails g cancan:ability
  1. 生成されたモデルを以下の様に変更します。(model/ability.rb)

管理者権限を持つユーザに管理画面へのアクセスと全てのモデルに対しての全ての操作(新規保存、編集、削除など)」を許可する設定です。

ability.rb
class Ability
  include CanCan::Ability

  def initialize(user)
    if user.try(:admin?)
      can :access, :rails_admin
      can :manage, :all
    end
  end
end

3.config/initializers/rails_admin.rbも以下のように変更します。

ability.rb
RailsAdmin.config do |config|

  ### Popular gems integration

  ## == Devise ==
  config.authenticate_with do
    warden.authenticate! scope: :user
  end
  config.current_user_method(&:current_user)

  ## == Cancan ==
  config.authorize_with :cancan

  ## == Pundit ==
  # config.authorize_with :pundit

管理者権限の付与

deviseで登録したユーザに管理者権限を持たせたいと思います。
ユーザが管理者がどうかを判断する為に、「admin」カラムを追加し、ture or falseで判断出来るようにします。

$ rails g migration add_column_to_users
Gemfile
class AddColumnToUsers < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :admin, :boolean, default: false
  end
end
$ rails db:migrate

schema.rbを確認し、正しく追加されていることを確認してください。

#登録ユーザに権限を付与する

$ rails c
$ User.all
$ user = User.find(3)※任意のユーザに付与してください。
$ user.update_attribute :admin, true

今回の場合は、3番目にユーザに管理者権限を付与しました。
このユーザは管理画面に遷移できます。

#管理者の条件分岐
管理者のみの表示させたいときは、<% if current_user.try(:admin?) %><% end %>でログイン中のユーザが管理権限を持つユーザを判断出来ます。

rails_adminの日本語化

1.Railsの日本語に変更します。

application.rb
config.i18n.default_locale = :ja を追記する

2.config/locales/rails_admin.ja.ymlを作成します。
3.こちらの翻訳をコピーし、rails_admin.ja.ymlに貼り付けます。
以上で日本語化は完了です。

参考資料

【Rails】管理画面(rails_admin)を実装するとユーザー情報管理が想像以上に便利な話

最後に

簡単に管理者機能を実装することが出来ました。
私はこの便利なgemのおかげで、他の機能に時間を掛けることが出来ました。
もし、よかったら参考してみてください。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away