MS SQL 2008サーバからクエリを実行して取得する小さなメソッドを書いています。私のレールアプリで。Railsアプリケーションでこの新しい 'non-rails-way'メソッドをどこに追加するのですか
シナリオ:
私はレガシーMS SQL 2008サーバーのDBに接続してRubyとRailsのアプリを書いています。 多くのものが期待どおりに動作していますが、これは素晴らしいことです。 今のところ、私はレガシーDBのコピーを取り除き、私はそれを読み取り専用として扱います。それは大きかった(7000 +テーブルの中には4,000万レコード以上のものがある)。私はそれをそのままの状態で使用しており、根底にあるスキーマを変更したくない。
非常にサーバー固有の機能をいくつか拡張したいと考えています。たとえば、私は次のものを使用します:
thing = ActiveRecord::Base.connection.exec_query(my_query_string_here)
...と動作します。結果はハッシュを含む配列で、関連するハッシュ値は次の式を使用して取得できます。
thing[0][""]
...が動作します。
だから、私は私がこれを容易にするための方法を記述しなければならないし、私が書いたと思った:
Class Tool < ActiveRecord::Base
def self.queryRDW(x)
res=ActiveRecord::Base.connection.exec_query(x)
ret=res.to_hash
return ret[0][""]
end
end
をし、残念ながら設定/初期化子/ tool.rbに入れ、WEBrickにはしてブート時にファイルについて不平を言います潜在的なエラーの後に:
.../config/initializers/tool.rb:7: syntax error, unexpected keyword_end, expecting $end (SyntaxError)
私はこのことが決まっていることを認識していますので、私に思い出さないでください。 (私の闘争は、多くの場合、十分に私を思い出させる)
私の質問:私は、コントローラや私のレールのアプリでビュー内から呼び出すことができるように、このコードを配置する必要があり
?これは新しいClassメソッドか他のものである必要がありますか?
多くの感謝!
補遺:
私は(DOH!)クラスにクラスを変更し
私は私が今あることをtool.rbを変更するのlib/
にtool.rbを移動:
module Tool
def self.queryRDW(x)
res = ActiveRecord::Base.connection.exec_query(x)
res.to_hash[0][""]
end
end
が、これをやってapp/views/stats.html.erb
thing=queryRDW("mysql string")
に私に '未定義のメソッドエラー' 取得
補遺2
ディレクトリapp/concernsを作成し、そこにtool.rbを配置しました。
私が使用:中
<%=queryRDW("myStringHere")%>
:
app/views/stats.html.erb
私が取得:
undefined method `queryRDW' for #<#<Class:0x0000000378ccf8>:0x00000003c1ce58>
mg。ありがとう。 'unexpected keyword_end'が固定され、webrickが起動します。今、ビューでqueryRDWを呼び出そうとすると、#<#:0x00000003632718>のための未定義のメソッド 'queryRDW 'が得られます。 –
私は私の答えを更新した後までこのコメントを見ませんでした。質問を編集し、このエラーを生成するビューにコードを追加できますか? – Brandan
完了。ここに私を助けてくれてありがとう。 –