が、私は単純なケースを持っている(オブジェクト#inspectをサポートしていません)私は2つのモデルクラスを含む、
を取得Snapshot.new
を使用して、コンソールをレール
(Object doesn't support #inspect)
ここはいいところです。 snapshot.rbでinitializeメソッドをコメントアウトすると、Snapshot.newが機能します。なぜこうなった?
私はRails 3.1とRuby 1.9.2を使用しています
が、私は単純なケースを持っている(オブジェクト#inspectをサポートしていません)私は2つのモデルクラスを含む、
を取得Snapshot.new
を使用して、コンソールをレール
(Object doesn't support #inspect)
ここはいいところです。 snapshot.rbでinitializeメソッドをコメントアウトすると、Snapshot.newが機能します。なぜこうなった?
私はRails 3.1とRuby 1.9.2を使用しています
これは、基本クラス(ActiveRecord :: Base)のinitialize
メソッドをオーバーライドしたためです。基本クラスで定義されたインスタンス変数は初期化されず、#inspect
は失敗します。私は正確な理由はわからないが、私は偶然で「belong_to」として「belongs_toの」のスペルが間違ったときに、私はこのエラーを得た
class Game < ActiveRecord::Base
has_many :snapshots
def initialize(params={})
super(params)
# ...
end
end
なぜあなたはsuperにparamsを渡していますか? ActiveRecord :: Baseは何をしますか? –
:あなたは、サブクラスでsuper
を呼び出す必要があり、この問題を解決するには
関連付けられたクラス定義
このようなモデルでシリアライズしたとき、私はこの症状がありました。
serialize :column1, :column2
ようにする必要があります。
serialize :column1
serialize :column2
と 'serialize:description、Array'を正しく書いていません(' serialize:description、:array'として) – lakesare
これは問題ではないかもしれませんが、これはカスタムの 'inspect'メソッドでエラーが発生した場合に発生します。元のエラーは表示されず、迷惑になる可能性があります。 –