Estoy seguro de que esta es una pregunta muy simple, pero yo sólo soy un novato así que ...Ruby on Rails: La creación de los objetos secundarios
tengo un modelo, juego, que has_many :piles
. Pila, a su vez, has_many :cards
. Soy capaz de llenar las pilas y tarjetas en la creación del juego, por lo que mi código en la actualidad se ve algo como:
class Game < ActiveRecord::Base
has_many :piles
def after_create
1.upto(4) do |num|
Pile.new("game_id" => id, "contents" => "c_type_#{num}")
end
end
end
class Pile < ActiveRecord::Base
has_many :cards
belongs_to :game
def after_create
1.upto(10) do |num|
Card.new("pile_id" => id, "value" => num)
end
end
end
class Card < ActiveRecord::Base
belongs_to :pile
end
Ahora bien, esto está muy bien, pero se siente mal estar pasando "game_id" => id
cuando ActiveRecord sabe que game_id es la clave externa y debe referirse al juego principal. Pero si lo dejo, la clave externa termina desarmada. ¿Hay una mejor manera de hacer esto?
(Para un bono, probablemente más simple, se trata; supongamos juego también has_one :monkey
Como mejor puedo crear el mono dentro del modelo de juego.?)