Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要将单词转换为字符串,以便在ruby中通过sql进行搜索_Sql_Ruby On Rails_Ruby_Postgresql_Ruby On Rails 4 - Fatal编程技术网

需要将单词转换为字符串,以便在ruby中通过sql进行搜索

需要将单词转换为字符串,以便在ruby中通过sql进行搜索,sql,ruby-on-rails,ruby,postgresql,ruby-on-rails-4,Sql,Ruby On Rails,Ruby,Postgresql,Ruby On Rails 4,我有一个基于rails4的应用程序,使用PG,我有一个问题控制器,每个问题都有标签。我希望用户有一个字段,可以在其中输入用逗号分隔的关键字 问题是,find_by_sql需要每个单词边界都是一个用逗号分隔的字符串 我现在有这个只是为了测试,因为它只适用于一个单词,除非我手动输入像这样的单词“ruby”,“rails”,“angular” 同样,用户将有一个文本输入,他们可以把它放到ruby、rails、angular Question.find_by_sql("SELECT * FROM que

我有一个基于rails4的应用程序,使用PG,我有一个问题控制器,每个问题都有标签。我希望用户有一个字段,可以在其中输入用逗号分隔的关键字

问题是,find_by_sql需要每个单词边界都是一个用逗号分隔的字符串

我现在有这个只是为了测试,因为它只适用于一个单词,除非我手动输入像这样的单词
“ruby”,“rails”,“angular”

同样,用户将有一个文本输入,他们可以把它放到
ruby、rails、angular

Question.find_by_sql("SELECT * FROM questions AS q INNER JOIN taggings AS t ON q.id = t.question_id INNER JOIN tags AS ta ON ta.id = t.tag_id WHERE ta.name IN ('#{current_user.first_name}');")
然后我可以用这些词来搜索

我希望这是有意义的,并提前感谢

那么:

query_tags = user_input.split(',').map { |i| "'" + i.strip + "'" }.join(', ')
# => "ruby", "rails", "angular"

为什么要将SQL的字符串用双引号括起来?那正确地逃避呢?对不起,那是我的错误。这是单引号。Question.find_by_sql(“从问题中选择*作为q内部连接标记作为t ON q.id=t.Question_id作为ta ON ta.id=t.tag的内部连接标记作为ta ON ta.id=t.tag_id其中ta.name IN('Jared','ruby');”)不要只在字符串周围加上单引号,使用
connection.quote
正确地进行连接。@muistooshort我不知道你在说什么,也不知道如何让它工作。
““+I.strip+””
是一个非常糟糕的主意,在其中一个字符串中插入一个引号,所有内容都会偏离方向。你想改为
ActiveRecord::Base.connection.quote(i.strip)
。将我对副本的回答与简单的
split
strip
结合起来,就完成了。