We start by getting devise up and running and generating the User model.
rails generate devise User
Then you'll probably run rake db:migrate
and follow their instructions for making sure you have a few default things in order. Okay, so far so good.
We're going to identify the user as an admin with the help of enum. So let's generate a migration
rails generate migration add_role_to_users
Pop that sucker open and add
class AddRoleToUsers < ActiveRecord:Migration
def change
add_column :users, :role, :integer
# Make sure all potentially existing users are set to just plain old users
User.update_all role: 0
end
end
In user.rb
add the following
enum role: [:user, :admin]
after_initialize :set_default_role, if => :new_record?
private
def set_default_role
self.role ||= :user
end
Well, now you're in the position to create a helper. For example:
module SessionHelper
def admin_user?
if current_user.try(:role)
if current_user.role == 'admin'
true
end
end
end
end
And that's cool, because you can test in your controllers. Maybe something like:
def update
if admin_user?
@posts = Post.all
end
end