2016-08-24 2 views
0


Я хотел бы получить совет о заявлении «IF» о действии «Избранное», которое разрешает пользователю любимую игру. Одна ассоциация необходима для одной игры. Один идентификатор пользователя/один идентификатор игры (в таблице соединений).Rails - Statement IF для таблицы соединений в контроллере

Я получил единственность в БД с моей моделью GameUser:

class GameUser < ActiveRecord::Base 
    belongs_to :game 
    belongs_to :user 
    validates_uniqueness_of :game_id, scope: :user_id 
end 

контроллер (который работает, просто возвращает ошибку, когда я получил уже добавили в избранное игру): Я хотел бы, чтобы правильно написать Если и я действительно не знаю, как

def favorite 
      game = Game.find(params[:id]) 
      if            
    # Here is where I struggle, 
    #if User haven't got already a match in the DB (Join table User_ID/Game_ID) then : 
       current_user.games << game 
       flash[:notice] = "#{Game.name} Favorited" 
       redirect_to games_url 
       else 
       flash[:notice] = "#{Game.name} already favorited" 
       redirect_to games_url 
       end 
     end 

Большое спасибо.

ответ

0

имеет игру has_many :game_users? Если это так должно быть достаточно

if game.game_users.exists?(user_id: current_user.id) 

обратите внимание, что вы можете сделать это даже без объединения

if GameUser.exists?(user_id: current_user.id, game_id: game.id) 
+0

Вот отлично! Да, у меня уже есть has_many: game_user, это была просто ошибка с любимым действием, когда она уже была предпочтительна. Но спасибо, это сработало! я только что изменил IF для a Unless во втором заявлении;) –

+0

Добро пожаловать :) – Ursus

Смежные вопросы