2011-10-07 15 views
5

が、私は単純なケースを持っている(オブジェクト#inspectをサポートしていません)私は2つのモデルクラスを含む、

を取得

Snapshot.new 

を使用して、コンソールをレール

(Object doesn't support #inspect) 

ここはいいところです。 snapshot.rbでinitializeメソッドをコメントアウトすると、Snapshot.newが機能します。なぜこうなった?
私はRails 3.1とRuby 1.9.2を使用しています

+0

これは問題ではないかもしれませんが、これはカスタムの 'inspect'メソッドでエラーが発生した場合に発生します。元のエラーは表示されず、迷惑になる可能性があります。 –

答えて

9

これは、基本クラス(ActiveRecord :: Base)のinitializeメソッドをオーバーライドしたためです。基本クラスで定義されたインスタンス変数は初期化されず、#inspectは失敗します。私は正確な理由はわからないが、私は偶然で「belong_to」として「belongs_toの」のスペルが間違ったときに、私はこのエラーを得た

class Game < ActiveRecord::Base 
    has_many :snapshots 

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

なぜあなたはsuperにparamsを渡していますか? ActiveRecord :: Baseは何をしますか? –

0

:あなたは、サブクラスでsuperを呼び出す必要があり、この問題を解決するには

関連付けられたクラス定義

7

このようなモデルでシリアライズしたとき、私はこの症状がありました。

serialize :column1, :column2 

ようにする必要があります。

serialize :column1 
serialize :column2 
+0

と 'serialize:description、Array'を正しく書いていません(' serialize:description、:array'として) – lakesare

関連する問題