if current_user.id = @game.user_id

1.6k views Asked by At

I have links to the show pages for each game in my project and if the games user_id matches the id of the currently signed in user then I want it to display the edit button if they are not then it shouldn't display.

I currently have the following code set but it doesn't work. Every game has the edit button display. The code is as followed:

 <% if current_user.id = @game.user_id %>
    <div id="text3"><%= link_to 'Edit', edit_game_path(@game) %></div><br />
 <% end %>

Any ideas?

2

There are 2 answers

4
Spyros On BEST ANSWER

MrDanA's answer is most probably the error, but you may want to make this code better. Checking like that is not the Rails way of doing it. Instead, make a User instance method like :

def has_game?(game)
  self.games.exists?(:id => game.id)
end

and then in your view :

<% if current_user.has_game?(@game) %> ...

(can even be better by further delegating exists into the game model, as a scope or so, if you like)

2
MrDanA On

You want ==

So:

<% if current_user.id == @game.user_id %>