Rails - 控制器中

时间:2016-08-24 09:16:16

标签: mysql ruby-on-rails


我希望就关于允许用户喜欢游戏的“收藏”动作的“IF”声明提出建议。 一个游戏需要一个关联。一个用户ID /一个游戏ID(在连接表中)。

我使用我的模型GameUser在数据库中获得了一致性:

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

控制器(正在工作,当我已经收到游戏时,只返回一个错误): 我想写正确的If和我真的不知道如何

 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

提前多多感谢。

1 个答案:

答案 0 :(得分: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)