Rails コントローラーでは、外部データベースへの JSON 要求を使用して、レコードのコレクションを並べ替えるために使用される整数を返します。
Model.order(JSON.parse(open("http://myapp.com/models/#{:id}")).read)['attribute'])
これを動的にして、環境間の切り替えを支援したいと考えています。何かのようなもの:
Model.order(JSON.parse(open(model_url(model))).read)['attribute'])
これは正しくなくmodel_url(model)
、エラーを返しています:
undefined local variable or method 'model'
クエリで自分自身を参照するにはどうすればよいですか?
よりもエレガントなソリューションが必要です
...JSON.parse(open("#{root_url}/models/{:id}"))....
編集:
以下の Lightswitch05 の回答は、私が尋ねた質問に答えます。クエリはparams[:id]
、現在のレコードの URL を取得するために参照する必要があります。
実際、この JSON 呼び出しをモデルの仮想属性に移動することにしました。これは、単純に を呼び出すことができることを意味しますModel.order(:my_virtual_attribute)
。このソリューションには独自の問題がありますが (モデルで url_helpers を使用できるようにする必要がありました)、長い目で見れば、これはよりクリーンなソリューションになると思います。