我希望就关于允许用户喜欢游戏的“收藏”动作的“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
提前多多感谢。
答案 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)