2017-07-24 105 views
-1

我有2个模型:UserGame。我需要创建包含这些模型的fk的模型(game_iduser_id)。这意味着User可以有几个游戏。 我产生这种模式:Rails创建包含来自不同表格的两个外键的模型

class CreateUserGames < ActiveRecord::Migration[5.1] 
    def change 
    create_table :user_games do |t| 
     t.references :game, foreign_key: true 
     t.references :user, foreign_key: true 
     t.timestamps 
    end 
    end 
end 

因此,主要的问题,我需要添加按钮“接受”(或不服这样的),如果用户登录,它在该表与当前游戏的ID,并创建记录当前用户的ID。 现在我该怎么做?

回答

0

您可以使用link_to和post方法并创建一个操作来处​​理该操作。例如:

link_to "Take", 'your_action_url', method: post, game_id: 'your_game_id' 

还记得上route.rb创建行动网址:

match "your_action_url" => "your_controller#take_game", via: [:post] 

然后,您创建行动是这样的:

def take_game 
    user_id = current_user.id #(if you're using devise) 
    if UserGame.create!(game_id: params[:game_id], user_id: user_id) 
    #handle success and return to the view 
    else 
    #handle error 
    end 
end 

想这是一个很好的方式要做到这一点。希望这可以帮助!

+0

嘿!非常感谢,老兄!它绝对是我需要的!不幸的是我没有足够的声望来感谢你 –

相关问题