Dies folgt dieser vorherigen Frage, die beantwortet wurde. Ich habe tatsächlich festgestellt, dass ich einen Join aus dieser Abfrage entfernen kann. Jetzt funktioniert die Abfrage
start_cards = DeckCard.find :all, :joins => [:card], :conditions => ["deck_cards.deck_id = ? and cards.start_card = ?", @game.deck.id, true]
Dies scheint zu funktionieren. Wenn ich jedoch versuche, diese DeckCards in eine andere Zuordnung zu verschieben, wird der Fehler ActiveRecord :: ReadOnlyRecord angezeigt.
Hier ist der Code
for player in @game.players
player.tableau = Tableau.new
start_card = start_cards.pop
start_card.draw_pile = false
player.tableau.deck_cards << start_card # the error occurs on this line
end
und die relevanten Modelle (Tableau sind die Spielerkarten auf dem Tisch)
class Player < ActiveRecord::Base
belongs_to :game
belongs_to :user
has_one :hand
has_one :tableau
end
class Tableau < ActiveRecord::Base
belongs_to :player
has_many :deck_cards
end
class DeckCard < ActiveRecord::Base
belongs_to :card
belongs_to :deck
end
Ich mache eine ähnliche Aktion direkt nach diesem Code und füge DeckCards
sie der Hand des Spielers hinzu, und dieser Code funktioniert einwandfrei. Ich habe mich gefragt, ob ich belongs_to :tableau
das DeckCard-Modell brauche, aber es funktioniert gut für das Hinzufügen zur Hand des Spielers. Ich habe ein tableau_id
und hand_id
Spalten in der DeckCard-Tabelle.
Ich habe ReadOnlyRecord in der Rails-API nachgeschlagen, und es sagt nicht viel über die Beschreibung hinaus.