Я пытаюсь смоделировать карточную игру для изучения Rails. Это отличается от стандартной колоды игральных карт тем, что в колоде может быть несколько копий карты. Я сталкиваюсь с проблемами при попытке инициализировать колоду. До сих пор у меня есть базовая модель карты с различными атрибутами (например, copy_in_deck), но без ассоциаций. Модель DeckCard, представляющая карты в колоде (это связано с наличием нескольких карт одной и той же карты в колоде):
class DeckCard < ActiveRecord::Base
belongs_to :card
belongs_to :deck
end
Эти колоды в конечном итоге будут иметь атрибуты, отражающие положение; например, в стопке сброса, в колоде розыгрыша и т. д.
Модель колоды с
belongs_to :game
has_many :deck_cards
Я пытаюсь инициализировать колоду, и у меня возникают различные проблемы. Я пробую следующее в колоде
def initialize
@cards = Card.find(:all)
@cards.each do |card|
# eventually another loop here on copies_in_deck
@deck_cards.build(card)
end
end
Когда я делаю Deck.new
, я получаю сообщение об ошибке на nil.build. Почему @deck_cards nil?
Я использую InstantRails2, у которого есть rails 2.0.2. Я нашел эту статью о создании нескольких моделей за одно действие, поэтому я попытался использовать Deck.create! вместо этого, и получил ошибку о неправильном количестве аргументов.
Есть предложения?