यह this पूर्व प्रश्न है, जिसका उत्तर दिया गया था। मुझे वास्तव में पता चला कि मैं उस क्वेरी से जुड़ सकता हूं, इसलिए अब कामकाजी क्वेरीइस ActiveRecord :: ReadOnlyRecord त्रुटि का कारण क्या है?
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 देखा, और यह विवरण से काफी कुछ नहीं कहता है।
: शामिल # प्रश्नों को कम करने में मददगार है, मुझे इसके बारे में पता नहीं था; लेकिन मैंने tableau/Deckcards एसोसिएशन को has_many में बदलकर इसे ठीक करने का प्रयास किया: के माध्यम से, और अब मुझे 'एसोसिएशन नहीं मिला' संदेश मिल रहा है; मुझे – user26270
@ कोडमैन के लिए एक और प्रश्न पोस्ट करना पड़ सकता है, हां, इसमें शामिल प्रश्नों की संख्या कम हो जाएगी * और * शामिल तालिका को आपकी हालत के दायरे में लाएगा (एक प्रकार का अंतर्निहित हिस्सा आपके रिकॉर्ड को पढ़ने के रूप में चिह्नित करता है- केवल, जैसे ही यह आपके खोज में एसक्यूएल-आईएसएच को स्नीफ करता है, इसमें शामिल हैं: शामिल हों /: चयन करें IIRC – vladr
'has_many: a, through =>: b' के लिए काम करने के लिए, बी एसोसिएशन भी घोषित किया जाना चाहिए , उदाहरण के लिए 'has_many: b; has_many: a,: through =>: b', मुझे आशा है कि यह आपका मामला है? – vladr