質問編集履歴
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 |  | 
