Skip to content

Instantly share code, notes, and snippets.

@keppy
Created September 27, 2012 06:51
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save keppy/3792565 to your computer and use it in GitHub Desktop.
Save keppy/3792565 to your computer and use it in GitHub Desktop.
required parameter missing: user
class ApplicationController < ActionController::Base
protect_from_forgery
## filter_parameter_logging :password, :password_confirmation
helper_method :current_user_session, :current_user, :permitted_params
...
def permitted_params
@permitted_params || PermittedParams.new(params, current_user)
end
end
class PermittedParams < Struct.new(:params, :user)
def user
params.require(:user).permit(*user_attributes)
end
def user_session
params.require(:user_session).permit(*user_session_attributes)
end
def user_session_attributes
if !user.has_role(:inactive)
[:login, :password, :remember_me]
end
end
def user_attributes
if user && user.has_role(:company_user)
[:login, :password, :email, :roles]
elsif user && user.has_role(:admin)
[:login, :password, :email]
elsif user && user.has_role(:basic_employee)
[:login, :password, :email]
end
end
end
class User < ActiveRecord::Base
# Model based role assignment
has_many :assignments
has_many :roles, :through => :assignments
acts_as_authentic
validates_uniqueness_of :login
validates_presence_of :login, :email, :password
#attr_accessible :login, :email, :password, :password_confirmation
#attr_accessible :login, :email, :password, :password_confirmation, :admin, :can_view_invoices,
# :can_view_reports, :inactive, :as => :company_user
attr_accessor :permission_level
has_one :employee
end
class UsersController < ApplicationController
## before_filter :require_no_user, :only => [:new, :create]
before_filter :require_user, :only => [:show, :edit, :update]
load_and_authorize_resource
def index
@users = User.all
end
def new
@user = User.new
end
def create
@user = User.new(permitted_params.user)
if @user.save
# Deliver the signup_email
UserMailer.signup_email(@user).deliver
flash[:notice] = "Account registered!"
redirect_back_or_default users_url()
else
render :action => :new
end
end
def show
@user = User.find(params[:id])
end
def edit
@user = User.find(params[:id])
end
def update
if @user = User.find(params[:id]).tap { |user|
user.update_attributes(permitted_params.user)
}
flash[:notice] = "Account updated!"
redirect_to :index
else
render :action => :edit
end
end
def destroy
@user = User.find(params[:id])
@user.destroy
flash[:notice] = "User deleleted successful!"
redirect_back_or_default users_url
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment