2017-01-27 12 views
0

私のデータベースに対して任意のクエリを実行したい。今のところ私はいつもfind_by_sqlに頼って結果が正しいタイプに変換されていることを確認します。このメソッドの欠点は、Railsモデルにメソッドが関連付けられていることがあることです。 find_by_sqlメソッドによって返されたフィールドがモデルに存在する場合、モデルのメソッドが使用されます。モデルメソッドのない型キャスト付きの汎用find_by_sql

代わりにActiveRecord::Base.connection.executeまたはModel.connection.executeを使用することです。そのメソッドによって返された結果は、rubyオブジェクトに適切にマップされません。例えば、DateTimeのオブジェクトは文字列として返され、実際のルビオブジェクトとして返されることはありません。

どうすればよいですか?

答えて

1

find_by_sqlを使用できますが、.column_nameではなく[:colum_name]を呼び出して実際のデータベースを取得できます。

例:

q = Question.find_by_sql('select * from questions limit 1').first 

q.title 
=> "1" 

q[:title] 
=> "How to convert MagicaVoxel to vector?" 
関連する問題