Ruby on Rails Equality

Hi all,

Just wondering about equality in rails for access to certain features
such as the following.

I have a table for games and all users are able to click on the show
button to display the actual record. On the show page it has the options
to go back or edit. I want to do the following

If the current_user equals the id associated with the game
     Then allow the to edit
  else
     redirect the back to the product show page
  end

The only line I am not sure on how to do is to match current user with
the id associated user_id of the game.

Any suggestions?

what I have is the following but no luck:

  def edit
    if current_user.id = @game.user_id
    @game = Game.find(params[:id])
    else
    format.html { redirect_to root_url }
    end
  end

Hi Christopher,

remember, = is not equal, the correct is

if current_user.id == @game.user_id

and look at this

https://github.com/ryanb/cancan

maybe help you.

if current_user.id = @game.user_id

@game = Game.find(params[:id])

Wait, what?

@game is initially null. So, you should first fetch the game we’re talking about.

@game = Game.find(params[:id])

Now, check if the game is indeed a valid game.

@game = Game.find(params[:id])

if @game

else

format.html { redirect_to root_url }

end

Check if the current user is the game’s user. Note that as @Martin Aceto pointed out, equal conditional operator is ==

@game = Game.find(params[:id])

if @game

if current_user.id == @game.user_id

format.html

else

format.html { redirect_to root_url }

end

else

format.html { redirect_to root_url }

end

Dheeraj Kumar

Been working on it this afternoon guys and made a fair few tweaks and it
has resulted in success.

Thanks for all the help guys.

You’re welcome :slight_smile:

Dheeraj Kumar