0

ルビーを学んでいます。次のような単純な検索コマンドを使用するためにアクティブ レコードを使用したいと思いMyModel.find_by_emp_id(i.emp_id)ます。次のように、モデルに対して単純な SQL クエリを実行した結果セット: vemployees = conn.query("select * from employees") ハッシュのようなデータ構造を返します。データ構造 vemployees は Vertica::result タイプで、構造は次のようになります。

[
  {:emp_id=>"3321", :emp_last_name=>"Man", :emp_first_name=>"super", :emp_mid_name=>nil}, 
  {:emp_id=>"3325", :emp_last_name=>"Man", :emp_first_name=>"Bat", :emp_mid_name=>nil},
]

結果のリストを確認せずに vemployees.find_by_emp_id(i.emp_id) のようなものを実行するにはどうすればよいですか?

4

1 に答える 1

0

注意: テストされていないコード

何かのようなもの:

MyModel で:

def self.find_by_emp_id(id)
  conn.query("select * from employees where emp_id = #{id}")[0]
end

gem は ActiveRecord ではないため、独自のアクセサーを作成する必要があります。自動的に作成された ActiveRecord の find_by_ メソッドに依存することはできません。その宝石を ActiveRecord にハックして、ActiveRecord のすべての利点を利用できると思いますが、Ruby の初心者として取り組もうとしているのはおそらくそれ以上です。

ユーザー入力をサニタイズするように注意してください...

于 2013-04-23T15:54:50.967 に答える