Cái này theo cái này câu hỏi trước, được trả lời. Tôi thực sự phát hiện ra rằng tôi có thể xóa tham gia khỏi truy vấn đó, vì vậy bây giờ truy vấn đang hoạt động là
start_cards = DeckCard.find :all, :joins => [:card], :conditions => ["deck_cards.deck_id = ? and cards.start_card = ?", @game.deck.id, true]
Điều này xuất hiện để làm việc. Tuy nhiên, khi tôi cố gắng di chuyển các DeckCards này vào một liên kết khác, tôi gặp lỗi ActiveRecord :: ReadOnlyRecord.
Đây là mã
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
và các Mô hình có liên quan (tableau là thẻ người chơi trên bàn)
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
Tôi đang thực hiện một hành động tương tự ngay sau mã này, thêm DeckCards
vào tay người chơi và mã đó đang hoạt động tốt. Tôi tự hỏi liệu tôi có cần belongs_to :tableau
trong Mô hình DeckCard không, nhưng nó hoạt động tốt khi thêm vào tay người chơi. Tôi có một tableau_id
và hand_id
các cột trong bảng DeckCard.
Tôi đã tra cứu ReadOnlyRecord trong api rails, và nó không nói gì nhiều ngoài mô tả.