質問するログイン新規登録

質問編集履歴

5

質問内容の修正

2019/07/09 06:15

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  # 追記
18
18
 
19
- コントローラーで大量データのJSON出力が必要で、
19
+ 大量データのJSON出力が必要で、
20
20
  メモリ節約のためにあえてモデルを作らずに生SQLを実行したいです
21
21
 
22
22
  activeredord のモデルの中にかいてみたんですがやはりうまくいきません

4

質問内容の修正

2019/07/09 06:15

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -38,4 +38,5 @@
38
38
  render json: ActiveRecord::Base.connection.execute(query).map(&:first)
39
39
  ```
40
40
 
41
+ みたいな感じで入力をそのままSQLに渡しているのでエスケープ処理がしたいのですが
41
- みたいな感じで使用したいですが他にパフォーマンス重視できれいに掛ける方法はありますでしょうか
42
+ 他にきれいに掛ける方法はありますでしょうか

3

質問内容の修正

2019/07/09 06:14

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -24,8 +24,8 @@
24
24
  class user < ActiveRecord::Base
25
25
  def self.sanitize_sql(cond)
26
26
  # sanitize_sql(cond)
27
- # ActiveRecord::Sanitization::sanitize_sql
27
+ # ActiveRecord::Sanitization::sanitize_sql(cond)
28
- # ActiveRecord::Sanitization::ClassMethods::sanitize_sql
28
+ # ActiveRecord::Sanitization::ClassMethods::sanitize_sql(cond)
29
29
  end
30
30
  end
31
31
  ```

2

質問内容の修正

2019/07/09 06:12

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -28,4 +28,14 @@
28
28
  # ActiveRecord::Sanitization::ClassMethods::sanitize_sql
29
29
  end
30
30
  end
31
- ```
31
+ ```
32
+
33
+ ```
34
+ term = params.require(:term)
35
+ query = <<-EOS
36
+ SELECT DISTINCT user_id FROM users WHERE name LIKE '%#{User.sanitize_sql(term)}%'
37
+ EOS
38
+ render json: ActiveRecord::Base.connection.execute(query).map(&:first)
39
+ ```
40
+
41
+ みたいな感じで使用したいですが他にパフォーマンス重視できれいに掛ける方法はありますでしょうか

1

追記

2019/07/09 06:11

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -11,4 +11,21 @@
11
11
  `NoMethodError (undefined method `sanitize_sql' for ActiveRecord::Sanitization:Module):`
12
12
  となります
13
13
 
14
- このメソッドはどうすれば使えるのでしょうか
14
+ このメソッドはどうすれば使えるのでしょうか
15
+
16
+
17
+ # 追記
18
+
19
+ コントローラーで大量データのJSON出力が必要で、
20
+ メモリ節約のためにあえてモデルを作らずに生SQLを実行したいです
21
+
22
+ activeredord のモデルの中にかいてみたんですがやはりうまくいきません
23
+ ```
24
+ class user < ActiveRecord::Base
25
+ def self.sanitize_sql(cond)
26
+ # sanitize_sql(cond)
27
+ # ActiveRecord::Sanitization::sanitize_sql
28
+ # ActiveRecord::Sanitization::ClassMethods::sanitize_sql
29
+ end
30
+ end
31
+ ```