2017-01-20 10 views
1

私のアプリケーションのレールコンソール内で新しいユーザーを初期化しようとしています。私はこのエラーを取得するrailsコンソールを使用している場合、5(オブジェクトは#inspectをサポートしていません)

irb(main):001:0> user = User.new 

::私は初期化コードを入力するたびに

(Object doesn't support #inspect) 
=> 
irb(main):002:0> 

私は適切に設定したユーザーの資格情報を持っており、コードの任意の使用は間違った方法はありません。

誰かがエラーの原因を指摘できたら、私はそれを感謝します。

+0

あなたのマイグレーションファイルをユーザーに表示できますか?スキーマからコピー&ペーストするだけですか? –

+0

私はNoSQLデータベースを使用しています:MongoDB。移行はありません。 – metaco57

+0

完全なuser.rbコードとgemfileを貼り付けることができますか? –

答えて

0

user変数へのごUserオブジェクトとその割り当てのインスタンス化はうまく働いているように見えるので、私はあなたが実際にuserに保存されているUserの新しいインスタンスを持っていないことを期待します。あなたのUserクラスに含まれているコードの一部は、User#inspectメソッドを定義していません。

Userクラスを含むすべてのクラスはObjectクラスを継承し、Objectinspectというインスタンスメソッドを定義します。 #inspectは通常、オブジェクトの文字列表現を返すために#to_sを呼び出します。 IRBは、このメソッドを使用して、メソッドが定義されていると通常見える出力を生成します。

あなたはこの作品が#inspectを自分で定義する方法を見ることができるはずです。

class User 
    def inspect 
    "custom implementation of #inspect" 
    end 
end 


irb(main):001:0> user = User.new 
=> custom implementation of #inspect 
irb(main):002:0> 

だから、あなたが好きならば、あなた自身の#inspectを提供することができますが、それはあなたがする必要があるだろうと奇妙です。これを追跡したい場合は、User(明らかにちょうどMongoid::Document)に含まれているコードを見て、#inspectが定義されていない場所と理由を見つけようとします。

+0

#inspectを未定義にする方法はありませんか? – metaco57

+0

ファイル内のいくつかのメソッドがエラーの原因であることがわかりました。しかし、私はどちらのものか分からない。それを特定する方法はありますか? – metaco57

関連する問題