นี่ตามคำถามก่อนหน้านี้ซึ่งตอบแล้ว ฉันค้นพบจริงฉันสามารถลบการเข้าร่วมจากแบบสอบถามนั้นดังนั้นตอนนี้แบบสอบถามที่ทำงานอยู่
start_cards = DeckCard.find :all, :joins => [:card], :conditions => ["deck_cards.deck_id = ? and cards.start_card = ?", @game.deck.id, true]
ดูเหมือนว่าจะใช้งานได้ อย่างไรก็ตามเมื่อฉันพยายามย้าย DeckCards เหล่านี้ไปยังการเชื่อมโยงอื่นฉันได้รับข้อผิดพลาด ActiveRecord :: ReadOnlyRecord
นี่คือรหัส
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
และโมเดลที่เกี่ยวข้อง (tableau คือไพ่ของผู้เล่นบนโต๊ะ)
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
ฉันกำลังดำเนินการที่คล้ายกันหลังจากรหัสนี้เพิ่มDeckCards
ไปยังมือผู้เล่นและรหัสนั้นทำงานได้ดี ฉันสงสัยว่าฉันจำเป็นต้องใช้belongs_to :tableau
ใน DeckCard Model หรือไม่ แต่มันก็ใช้ได้ดีสำหรับการเพิ่มในมือของผู้เล่น ฉันมีtableau_id
และhand_id
คอลัมน์ในตาราง DeckCard
ฉันค้นหา ReadOnlyRecord ในราง API และมันไม่ได้พูดอะไรมากไปกว่าคำอธิบาย