यह इस पूर्व प्रश्न का अनुसरण करता है , जिसका उत्तर दिया गया था। मुझे वास्तव में पता चला कि मैं उस क्वेरी से एक जुड़ाव निकाल सकता हूं, इसलिए अब काम करने वाला प्रश्न है
start_cards = DeckCard.find :all, :joins => [:card], :conditions => ["deck_cards.deck_id = ? and cards.start_card = ?", @game.deck.id, true]
यह काम करता प्रतीत होता है। हालाँकि, जब मैं इन डेककार्ड्स को किसी अन्य एसोसिएशन में स्थानांतरित करने का प्रयास करता हूं, तो मुझे 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
और संबंधित मॉडल (झांकी टेबल पर खिलाड़ियों के कार्ड हैं)
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
डेककार्ड मॉडल में जरूरत है, लेकिन यह खिलाड़ी के हाथ को जोड़ने के लिए ठीक काम करता है। मैं डेककार्ड तालिका में एक tableau_id
और hand_id
कॉलम है।
मैंने रेल एपी में ReadOnlyRecord को देखा, और यह विवरण से परे बहुत कुछ नहीं कहता है।