Ciò segue questa domanda precedente, alla quale è stata data una risposta. In realtà ho scoperto che avrei potuto rimuovere un join da quella query, quindi ora la query funzionante è
start_cards = DeckCard.find :all, :joins => [:card], :conditions => ["deck_cards.deck_id = ? and cards.start_card = ?", @game.deck.id, true]
Questo sembra funzionare. Tuttavia, quando provo a spostare queste DeckCard in un'altra associazione, ottengo l'errore ActiveRecord :: ReadOnlyRecord.
Ecco il codice
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
e i relativi modelli (tableau sono le carte dei giocatori sul tavolo)
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
Sto facendo un'azione simile subito dopo questo codice, aggiungendo DeckCards
alla mano dei giocatori, e quel codice funziona bene. Mi chiedevo se fosse necessario belongs_to :tableau
nel modello DeckCard, ma funziona benissimo per l'aggiunta alla mano del giocatore. Ho una tableau_id
e hand_id
colonne nella tabella DeckCard.
Ho cercato ReadOnlyRecord nelle API dei binari e non dice molto oltre la descrizione.