2012-03-09 2 views
0

У меня есть следующий код в моем games_controller редактирования раздела:current_user.id == @ game.user_id не признается

def edit 
    @game = Game.find_by_game_name(params[:id]) 

    respond_to do |format| 
    if current_user.id == @game.user_id 
     format.html 
    else 
     format.html { redirect_to games_path, notice: 'You are not authorized to change these details.'} 
    end 
    end 
end 

Моя проблема заключается в том, что если я нажимаю на функции редактирования даже для тех игр, которые делают принадлежат пользователю, я перехожу к строке else с уведомлением о том, что я не уполномочен изменять эти данные. Поле user_id игр совпадает с идентификатором пользователя, но оно не позволит мне редактировать. Есть идеи, почему это может быть?

+1

Пожалуйста, используйте лучшие заголовки для своих вопросов. –

+0

Действительно ли 'current_user.id' возвращает строку или целое число? Тот же вопрос, но для '@ game.user_id'. –

+0

целое число. например, current_user.id равно 32, а user_id в поле игры равно 32. – user1222136

ответ

0

Вы довольно много спросил то же самое, как можно видеть в этом:

if current_user.id = @game.user_id

Это будет работать, если вы делаете это таким образом.

В вашем текущем примере это, вероятно, не работает, потому что вы не авторизованы должным образом. Попробуйте удалить if и посмотреть, будет ли он вообще работать без него.

+0

Привет, У меня уже есть этот код из предыдущего сообщения в моем приложении, так что это не проблема. Я удалил оператор if, окружающий его, и это отлично работает, я могу отредактировать его, если я должен был перейти к игре, которая не принадлежит current_user, и просто введите слова edit в верхней строке после своего имени, после чего я могу получить в функции редактирования. Как я могу это предотвратить? – user1222136

+0

Используйте метод has_game? (Game), который я указываю в сообщении, к которому я привязан. Проверьте, как: 'redirect_to error_page, если не current_user.has_game (@game)'. – Spyros

+0

будет выглядеть следующим образом: def has_game? (Game) self.games.exists? (: Id => game.id) конец, чтобы было похоже, что self.games.exist? else сообщение об ошибке? – user1222136