オブジェクト#IDは廃止されますが、オブジェクトを使用する#オブジェクトID
このコードでは、ActiveRecordモデルのID(Ruby VMのオブジェクトインスタンスIDではなく、明らかにテーブルの属性)にアクセスしています。
これらの特定の警告をオフにする方法や、何らかの方法でそれらを回避する方法を知っている人はいますか?オブジェクトがActiveRecord::Base
から下降するとき
オブジェクト#IDは廃止されますが、オブジェクトを使用する#オブジェクトID
このコードでは、ActiveRecordモデルのID(Ruby VMのオブジェクトインスタンスIDではなく、明らかにテーブルの属性)にアクセスしています。
これらの特定の警告をオフにする方法や、何らかの方法でそれらを回避する方法を知っている人はいますか?オブジェクトがActiveRecord::Base
から下降するとき
を使用してみてください。
私の場合、ActiveRecordオブジェクトをスタブしてそのID属性にアクセスすると、これらの警告が表示されます。
あなたのActiveRecordオブジェクトのIDにアクセスするために期待する場合には、私はあなたが次の操作を行うお勧めします:
mock("MyActiveRecordObject", :id => 1001)
、id
への呼び出しは:: Bのid
方法ではなく、Object
に廃止予定のものをARに進みます。
この警告は通常、自分のオブジェクトの1つが私の考えではないことを意味します。
私は2つの正解を受け入れることができたらいいと思っています... –
オブジェクト#id警告は、NilClassのような通常のルビークラスでのみ発生します。 ActiveRecord :: Baseはオブジェクト#idをオーバーライドします
オブジェクトは実際にはARオブジェクトではなく、通常はデータの取得に失敗したことを示します(Table.find_by_name('nonexistent name')
はnil
を返します)。表示されている警告を止めるだけの場合は、設定でwhiny_nils
をオフにしてください。それ以外の場合は、is_a?
のテストを行ってから、オブジェクトの属性にアクセスし、問題を正常に処理してください。
これはテストである場合、あなたは本物アクティブにアクセスしていることを確認していますレコードのエンティティではなく、通常のルビオブジェクトではないでしょうか? –
ああ...これらはよく模擬されたオブジェクトかもしれません –
それは完全にそれを修正したので、あなたは質問に答えるべきです。 –