2013-04-10 5 views
0

В настоящее время я работаю над проектом Rails с использованием Mongoid. У меня есть модель Game, которая содержит много GamePlayers. К сожалению, я не могу понять, как создавать новые игры. Я могу создать игру без игроков, используя Game.create, но когда я пытаюсь создать игроков для игры, она дает синтаксическую ошибку. Я пробовал искать в Интернете, но я не смог найти ничего, что могло бы быть связано с проблемой.Mongoid - Как создать документ со встроенными документами?

Вот мой код создания в GamesController.

def new 
    @game = Game.create(
     epoch: 1,  
     turn: 0, 
     auction_turn: -1, 
     auction_type: -1, 
     sun: 1, 
     ras: 0, 
     auction_track: [] 

     game_players: [ #doesn't work 
      { suns:[9,6,5,2] 
      }   
     ]  
    ) 

    redirect_to :action => "show", :id => @game._id 
    end 

Которая производит ошибку

/home/<redacted>/Ra/ra_server/app/controllers/games_controller.rb:36: syntax error, unexpected tIDENTIFIER, expecting ')' 
     game_players: [ #doesn't work 

Вот мои модели

class Game 
    include Mongoid::Document 

    field :epoch, type:Integer 
    field :turn, type:Integer 
    field :auction_turn, type:Integer 
    field :auction_type, type:Integer 
    field :sun, type:Integer 
    field :ras, type:Integer 
    field :auction_track, type:Array 


    embeds_many :game_players 
end 

class GamePlayer 
    include Mongoid::Document 

    field :score, type:Integer 
    field :bid, type:Integer 
    field :suns, type:Array 
    field :next_suns, type:Array 
    field :pharaohs, type:Integer 
    field :niles, type:Integer 
    field :floods, type:Integer 
    field :gods, type:Integer 
    field :gold, type:Integer 
    field :civilizations, type:Array 
    field :monuments, type:Array 

    embedded_in :game 
end 
+0

Как добавить запятую после auction_track: []? – Rebitzele

+0

@Rebit Спасибо, я не могу поверить, что пропустил это. В любом случае, похоже, сейчас он работает. – Antimony

+0

Несомненно! Я просто написал это как официальный ответ, чтобы люди это увидели. – Rebitzele

ответ

1

Оказывается вам не хватает запятой после auction_track: [] в ваших параметрах.

Смежные вопросы