読者です 読者をやめる 読者になる 読者になる

クズと天才は紙一重

不定期更新です。主に日々の活動記録( ・ㅂ・)و ̑̑

新規プロジェクトを作成

rails newで新規プロジェクトを作成。

データベースはPostgreSQLに設定。

 

とりあえず、load_and_authorize_resourceが使えるようになると便利なので、

CanCanCanの実装、そのために

Devise,rolifyの実装を行います。

ついでに、ユーザの権限を選択するフォームも作成。

 

Gemfileに以下4つを追加して、bundle install<span">を実行。

gem 'devise'
gem 'cancancan'
gem 'rolify'

 

 

model書き出しをしてくれる、annotateがあると便利なのでこちらも実装しておく

gem 'annotate'

 

その後、以下コマンドを実行

rails generate devise:install
rails generate devise User
rails generate cancan:ability
rails generate rolify Role User
rake db:migrate

 

あっ、エラーで止まった

PG::DuplicateColumn: ERROR:  column "email" of relation "users" already exists

emailカラムが既にできているらしい

不必要なmigrateファイルを削除して回避。

 

以下、コマンドを実行

rails g controller Home index

 

次に、Deviseの設定

config/routes.rbにrootの設定

root to: "home#index"

 

config/environments/development.rbに以下を追加

config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

 

ログインページのデザインを変更する時用にviewを作成しておく

rails generate devise:views

 

app/models/ability.rbに権限を定義

class Ability
 include CanCan::Ability
def initialize(user)
  user ||= User.new
if user.has_role? :admin
   can :manage, :all
  else
   can :read, :all
  end
 end
end

とりあえずここまで、

既に、load_and_authorize_resourceは使える状態

ログインページ作ったりまだまだやることはありそうな予感