新手问题 如何同时创建两个相关联的 model?

zix · 2016年09月30日 · 最后由 zix 回复于 2016年09月30日 · 1805 次阅读

这是 game 的 model

class Game < ApplicationRecord
  has_many :players, dependent: :destroy
end

这是 player 的 model

lass Player < ApplicationRecord
  belongs_to :game
  validates :number, presence: true, uniqueness: true
end

我想一次性创建一个 game 和他的 players,这是 controller:

def test
    @game = Game.new(game_params)
    if @game.save

       (0...5).each do |i|
         @player = @game.players.create(number:i)
         puts i
       end

      redirect_to root_path
    end
end

但是会报错

unknown attribute 'game_id' for Player.

Migration 贴出来看看?感觉是你少加字段了。

#1 楼 @msg7086

create_table "games", force: :cascade do |t|
  t.datetime "created_at", null: false
  t.datetime "updated_at", null: false
  t.integer  "sum_player"
end

create_table "players", force: :cascade do |t|
  t.boolean  "badman",      default: false
  t.integer  "number"
  t.boolean  "be_poisoned", default: true
  t.datetime "created_at",                  null: false
  t.datetime "updated_at",                  null: false
end

#1 楼 @msg7086 确实是。。忘了加 game_id

zix 关闭了讨论。 09月30日 01:29
需要 登录 后方可回复, 如果你还没有账号请 注册新账号