2016-09-12 11 views
0

私は比較的Railsに慣れていて、モデルからオブジェクトを作成しようとしています(app/services /で作成したサービスから同じものを試しました)。メソッドやサービスクラスから作成されたrailsオブジェクトは自動的に初期化されません

オブジェクトは作成されますが、オブジェクトのメソッドを呼び出そうとしているページにアクセスすると失敗します(このため、.find(id)を使用して「nil」メソッドに関するメッセージが表示されます) :

私がnil方法のエラーの後、コンソールでオブジェクトをチェックすると、オブジェクトが作成されましたが、すべての変数の型を「ゼロ」に設定されています。私が作成した場合

コンソールと同じクラスの新しいオブジェクトで、オブジェクトには型付きの変数があります。

トランス(ID:整数、TRANSACTION_ID:整数、sender_idを:文字列、recipient_id:文字列のcreated_at:日時、updated_atの:日時、量:フロート)オブジェクトを作成するコードが

transaction = Trans.new 
transaction.find(id) 

あります私はモデル内のメソッドの中からこれを呼び出しています。私はすべてをサービスに入れ、その中からサービスオブジェクトを作成することで同じことを試みました。結果は同じです。

これは何らかの理由でコンストラクタ/イニシャライザが呼び出されていないことを意味しますか?私は初期化子を上書きしたり変更したりしていない。

これは私がデータベースを照会することができますようにオブジェクトを作成しようとしているRailsの4

です。

答えて

0

私はこれについて数時間働いていましたが、質問を投稿した直後に何が間違っているのかを考え出しました。

オブジェクトは、次のように作成する必要があります

trans = Trans.find(id) 

代わりの

trans = Trans.new 

result = trans.find(id) 

これは私には直感的と思われるが、それは動作します。

これは、私が失った数時間を誰かに保存することを願っています!

関連する問題