Rails创建包含来自不同表的两个外键的模型

时间:2017-07-24 17:13:40

标签: ruby-on-rails postgresql model

我有2个模型:UserGame。我需要从这些模型(game_iduser_id)创建包含fk的模型。这意味着User可以有多个游戏。 我生成了这个模型:

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

所以,我需要添加按钮的主要问题&#39; Take&#39; (或类似的那样)并且如果用户登录,则在该表中创建具有当前游戏的id和当前用户的id的记录。 我现在该怎么办?

1 个答案:

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

猜猜这是一个很好的方法。希望这有帮助!