2016-08-24 33 views
0


我希望獲得關於允許用戶最喜歡遊戲的動作「Favorite」的「IF」聲明的建議。 一個遊戲需要一個關聯。一個用戶ID /一個遊戲ID(在連接表中)。Rails - 聲明IF在控制器中的連接表

我在DB的單一性與我的模型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,這只是最喜歡的動作的一個錯誤,它已經被收藏了。但感謝它的工作!我只是改變了中頻的一個除非在第二個聲明;) –

+0

不客氣:) – Ursus