Я уверен, что это очень простой вопрос, но я новичок, так что ...
У меня есть модель Game, которая has_many :piles
. Куча, в свою очередь, has_many :cards
. Я могу заполнять стопки и карты при создании игры, поэтому мой код выглядит примерно так:
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
Теперь все это очень хорошо, но кажется неправильным передавать "game_id" => id
, когда ActiveRecord знает , что game_id является внешним ключом и должно ссылаться на родительскую игру. Но если я оставлю это, внешний ключ не будет установлен. Есть ли лучший способ сделать это?
(Для бонуса, возможно, более простого вопроса; предположим, что Game также has_one :monkey
. Как лучше всего создать обезьяну из модели Game?)