質問編集履歴
2
追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -18,4 +18,11 @@
|
|
18
18
|
|
19
19
|
なぜでしょうか?しばらく試行錯誤したのですが、わかりませんでした。。
|
20
20
|
|
21
|
-
order の引数に直接文字列を入れると、もちろん動きます。ですので、これはrailsやmodelの問題ではなく、SQL文の書き方に問題があると思われますが、まだあまりSQL文の書き方を分かっておらず、困っています。よろしくお願いします。
|
21
|
+
order の引数に直接文字列を入れると、もちろん動きます。ですので、これはrailsやmodelの問題ではなく、SQL文の書き方に問題があると思われますが、まだあまりSQL文の書き方を分かっておらず、困っています。よろしくお願いします。
|
22
|
+
|
23
|
+
-- 追記 --
|
24
|
+
r1 の部分を、無理やりSQL文内部で展開すると、動きます。
|
25
|
+
```
|
26
|
+
a = Station.select("stations.*").where("st_dwithin(location, ?, 5000)", r1).order("st_distance(location, '#{r1}')").first
|
27
|
+
```
|
28
|
+
しかしこれだと、SQLインジェクション?の問題が起こると思われるので、望ましくありません。
|
1
見やすく
title
CHANGED
File without changes
|
body
CHANGED
@@ -10,7 +10,9 @@
|
|
10
10
|
```
|
11
11
|
これを実行すると
|
12
12
|
```
|
13
|
-
Station Load (0.9ms) SELECT stations.* FROM "stations"
|
13
|
+
Station Load (0.9ms) SELECT stations.* FROM "stations"
|
14
|
+
WHERE (st_dwithin(location, 'POINT (139.6479183406 35.5253746419)', 5000))
|
15
|
+
ORDER BY st_distance(location, ?, 5000), POINT (139.6479183406 35.5253746419) LIMIT $1
|
14
16
|
```
|
15
17
|
となり、`ORDER BY st_distance(location, ?, 5000)`の箇所の`?`に、適切に代入されていないことがわかる。
|
16
18
|
|