2016-05-17 11 views
0

私はRuby on RailsをからいくつかのActiveRecordを使用してPostgreSQLのクエリを持って私のクエリに変数を入れることは可能ですか?

my_table.location = ActiveRecord::Base.connection.execute("UPDATE my_table SET location = ST_SetSRID(ST_MakePoint(my_table.longitude, my_table.latitude), 4326)::geography") 

私はデータベースから列経度と緯度を使用したくないので、そのような私のクエリに変数を入れたいけどむしろ経度と緯度の値を含む変数です。

my_table.location = ActiveRecord::Base.connection.execute("UPDATE my_table SET location = ST_SetSRID(ST_MakePoint((?), (?), 4326)::geography"), longitude, latitude) 

私はそれを動作させる方法はありませんが、背後にある考え方を理解する必要があります。クエリに変数を使用する方法がありますか?それが動作しなかった

+0

で利用ユーザ変数を持っている私のクエリの1の例では教えてもらえていることができますか? –

+1

[動的なバインディングを使用してraw update sqlをレールで実行する方法](http://stackoverflow.com/questions/4483049/how-to-execute-a-raw-update-sql-with-dynamic-binding) -in-rails) – max

+0

緯度と経度の値がnilの場合、このエラーは次のように表示されます: 'エラー:型倍精度の入力構文が無効です:" "(ActiveRecord :: StatementInvalid)' – Erzu

答えて

0

はい、あなたは、この私は私のSQLクエリ

@from_date = Time.parse(@from).to_date.beginning_of_day 
    @till_date = Time.parse(@to).to_date.end_of_day 


sql = "select abc.sss,im.lat, 
im.long from users as rq JOIN images as 
im ON rq.id= im.imageable_id where rq.created_at 
    BETWEEN '#{@from_date}' AND '#{@till_date}' ;" 



    response = ActiveRecord::Base.connection.execute(sql) 
+0

以下に示唆されるようなもの? – Erzu

+0

SQLクエリで変数を使用する方法を理解しましたか?私はあなたに私の例の1つを示しました –

+0

'#{longitude}'これが使えない場合は#{経度}を使用できます –

関連する問題