Ini mengikuti ini pertanyaan sebelumnya, yang menjawab. Saya sebenarnya menemukan bahwa saya dapat menghapus gabungan dari kueri itu, jadi sekarang kueri yang berfungsi adalah
start_cards = DeckCard.find :all, :joins => [:card], :conditions => ["deck_cards.deck_id = ? and cards.start_card = ?", @game.deck.id, true]
Ini tampaknya berhasil. Namun, ketika saya mencoba untuk memindahkan DeckCards ini ke asosiasi lain, saya mendapatkan kesalahan ActiveRecord :: ReadOnlyRecord.
Ini kodenya
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
dan Model yang relevan (tablo adalah kartu pemain di atas meja)
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
Saya melakukan tindakan serupa tepat setelah kode ini, menambah DeckCards
ke tangan pemain, dan kode itu berfungsi dengan baik. Saya bertanya-tanya apakah saya perlu belongs_to :tableau
dalam Model DeckCard, tetapi itu berfungsi dengan baik untuk penambahan ke tangan pemain. Saya punya tableau_id
dan hand_id
kolom di tabel DeckCard.
Saya mencari ReadOnlyRecord di api rel, dan tidak banyak bicara di luar deskripsi.