-
Notifications
You must be signed in to change notification settings - Fork 0
Devise User
Chang-Woo Rhee edited this page Apr 5, 2022
·
3 revisions
docker-compose run --no-deps web rails g model user name:string:uniq
docker-compose run --no-deps web rails generate devise:install
docker-compose run --no-deps web rails generate devise User
docker-compose run --no-deps web rails db:migrate
docker-compose run --no-deps web rails generate devise:views:bootstrap_templates
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
gem 'devise-bootstrap-views', '~> 1.0'
docker-compose run --no-deps web rails generate devise:views:bootstrap_templates
class ApplicationController < ActionController::API
def is_owner user_id
unless user_id == @current_user.id
render json: nil, status: :forbidden
return
end
end
def is_owner_object data
if data.nil? or data.user_id.nil?
return render status: :not_found
else
is_owner data.user_id
end
end
end
# How to Use
class PostsController < ApplicationController
before_action only: [:update, :edit, :destroy] do
is_owner_object @post ##your object
end
end
https://github.com/heartcombo/devise/wiki/How-To:-Add-a-default-role-to-a-User
rails g model Role name:string
rails g migration addRoleIdToUser role:references
rake db:migrate
class User < ActiveRecord::Base
belongs_to :role
end
class Role < ActiveRecord::Base
has_many :users
end
- seed.rb
['registered', 'banned', 'moderator', 'admin'].each do |role|
Role.find_or_create_by({name: role})
end
rake db:seed
- user.rb
class User < ActiveRecord::Base
belongs_to :role
before_create :set_default_role
# or
# before_validation :set_default_role
private
def set_default_role
self.role ||= Role.find_by_name('registered')
end
end