authentication - Ruby On Rails - Setting Object Values -


i've created ruby on rails application in users can login , logout, , new accounts can created. users have integer "rankid", , depending rankid have different permissions on site.

i want users able upgrade next rank going rooturl/upgrade - in routes.rb have following:

map.connect '/upgrade', :controller => 'users', :action => 'upgrade' 

which makes use of following method in users controller:

def upgrade   @currentid = session[:user_id]   @user = user.find(@currentid)    if @user.rankid = 0     @user.rankid = 1     redirect_to root_url, :notice => "upgraded vip!"     return   end   if @user.rankid = 1     @user.rankid = 2     redirect_to root_url, :notice => "upgraded admin!"     return   end end 

i setup authentication using this tutorial , can't figure out why wont work. sorry if stupid mistake - i'm new both ruby , rails.

first, if statements need double equals sign, compare @user.rankid 0 instead of setting 0.

if @user.rankid == 0 

next, you're never saving users after updating them. lastly, use elsif on second block. otherwise, user upgraded vip , upgraded admin. using else/elsif, don't need hard code return statement.

full code:

def upgrade   @user = user.find(session[:user_id])   if @user.rankid == 0     @user.update_attributes(:rankid => 1)     redirect_to root_url, :notice => "upgraded vip!")   elsif @user.rankid == 1     @user.update_attributes(:rankid => 2)     redirect_to root_url, :notice => "upgraded admin!"   end end 

Comments

Popular posts from this blog

python - Scipy curvefit RuntimeError:Optimal parameters not found: Number of calls to function has reached maxfev = 1000 -

c# - How to add a new treeview at the selected node? -

java - netbeans "Please wait - classpath scanning in progress..." -