32
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-08-24

#初めに
ポートフィリオを作成する際、管理者側機能を実装するの面倒に感じたので管理者側は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のおかげで、他の機能に時間を掛けることが出来ました。
もし、よかったら参考してみてください。

32
36
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
32
36

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?