Esto sigue a esta pregunta anterior, que fue respondida. De hecho, descubrí que podía eliminar una combinación de esa consulta, por lo que ahora la consulta de trabajo es
start_cards = DeckCard.find :all, :joins => [:card], :conditions => ["deck_cards.deck_id = ? and cards.start_card = ?", @game.deck.id, true]
Esto parece funcionar. Sin embargo, cuando intento mover estas DeckCards a otra asociación, aparece el error ActiveRecord :: ReadOnlyRecord.
Aquí está el código
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
y los modelos relevantes (el cuadro son las cartas de los jugadores en la mesa)
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
Estoy haciendo una acción similar justo después de este código, agregando DeckCards
a la mano de los jugadores, y ese código funciona bien. Me preguntaba si lo necesitaba belongs_to :tableau
en el modelo DeckCard, pero funciona bien para agregarlo a la mano del jugador. Tengo una tableau_id
y hand_id
columnas en la tabla DeckCard.
Busqué ReadOnlyRecord en la API de rieles, y no dice mucho más allá de la descripción.