2011-10-07 16 views
5

मैं एक साधारण मामला है, दो मॉडल वर्गों को शामिल:(वस्तु #inspect का समर्थन नहीं करता)

class Game < ActiveRecord::Base 
    has_many :snapshots 

    def initialize(params={}) 
    # ... 
    end 
end 

class Snapshot < ActiveRecord::Base 
    belongs_to :game 

    def initialize(params={}) 
    # ... 
    end 
end 
इन माइग्रेशन के साथ

:

class CreateGames < ActiveRecord::Migration 
    def change 
    create_table :games do |t| 
     t.string :name 
     t.string :difficulty 
     t.string :status 

     t.timestamps 
    end 
    end 
end 

class CreateSnapshots < ActiveRecord::Migration 
    def change 
    create_table :snapshots do |t| 
     t.integer :game_id 
     t.integer :branch_mark 
     t.string :previous_state 
     t.integer :new_row 
     t.integer :new_column 
     t.integer :new_value 

     t.timestamps 
    end 
    end 
end 

अगर मैं में एक स्नैपशॉट उदाहरण बनाने का प्रयास सांत्वना रेल,

Snapshot.new 

का उपयोग कर रहा

मिल
(Object doesn't support #inspect) 

अब अच्छे हिस्से के लिए। अगर मैं स्नैपशॉट.आरबी में प्रारंभिक विधि को टिप्पणी करता हूं, तो स्नैपशॉट.न्यू काम करता है। ये क्यों हो रहा है?
रेल BTW मैं उपयोग कर रहा हूँ 3.1, और रूबी 1.9.2

+0

हालांकि यह आपकी समस्या नहीं किया गया है हो सकता है, यह ऊपर आता है जब वहाँ एक कस्टम 'विधि inspect' में उठाया एक त्रुटि है। मूल त्रुटि दिखाई नहीं दे रही है, जो परेशान हो सकती है। –

उत्तर

9

इसका कारण यह है कि आप अपने आधार वर्ग (ActiveRecord :: बेस) के initialize विधि ओवरराइड हो रहा है। आपके बेस क्लास में परिभाषित इंस्टेंस वैरिएबल प्रारंभ नहीं होंगे और #inspect विफल हो जाएंगे।

इस समस्या को आप अपनी उप वर्ग में super कॉल करने की आवश्यकता को ठीक करने के लिए:

class Game < ActiveRecord::Base 
    has_many :snapshots 

    def initialize(params={}) 
    super(params) 
    # ... 
    end 
end 
+0

आप सुपर पर पैरा क्यों पारित कर रहे हैं? ActiveRecord :: बेस इसके साथ क्या करेगा? –

0

मुझे यकीन है कि वास्तव में क्यों, लेकिन मैं जब मैं गलती से 'belongs_to' के रूप में 'belong_to' में गलत वर्तनी यह त्रुटि आई नहीं कर रहा हूँ संबंधित वर्ग परिभाषा।

7

मुझे यह लक्षण था जब मेरे पास इस तरह के मॉडल में एक धारावाहिक था;

serialize :column1, :column2 

जैसा होना चाहिए;

serialize :column1 
serialize :column2 
+0

और मैंने 'serialize लिखा: वर्णन, ऐरे 'अनुचित रूप से (जैसा कि' serialize: वर्णन,: सरणी ') – lakesare

संबंधित मुद्दे