Bu , cevaplanan bu önceki soruyu takip eder . Aslında ben bu sorgudan birleştirme kaldırabilirsiniz keşfetti, şimdi çalışma sorgusu
start_cards = DeckCard.find :all, :joins => [:card], :conditions => ["deck_cards.deck_id = ? and cards.start_card = ?", @game.deck.id, true]
Bu işe yarıyor gibi görünüyor. Ancak, bu DeckCard'ları başka bir ilişkilendirmeye taşımaya çalıştığımda ActiveRecord :: ReadOnlyRecord hatası alıyorum.
İşte kod
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
ve ilgili Modeller (tablodaki oyuncu kartları)
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
Bu koddan hemen sonra benzer bir işlem yapıyorum DeckCards
, oyuncuların eline ekliyorum ve bu kod iyi çalışıyor. belongs_to :tableau
DeckCard Modeline ihtiyacım olup olmadığını merak ettim , ama oyuncunun eline eklemek için iyi çalışıyor. DeckCard tablosunda bir tableau_id
ve hand_id
sütunları var .
Ben raylar api ReadOnlyRecord baktı, ve açıklamanın ötesinde çok şey söylemiyor.