Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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 on rails 执行rails搜索查询的有效方法_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 执行rails搜索查询的有效方法

Ruby on rails 执行rails搜索查询的有效方法,ruby-on-rails,ruby,Ruby On Rails,Ruby,我是rails的新手。我已经做了一个搜索查询 myresult=Model1。包括:model2',:model3。Model1.field1喜欢什么?或模型1。第二场怎么样?还是像model2.field1一样?还是像model2.field2一样?还是像model2.field3一样?还是像model3.field1一样?value1,value1,value2,value2,value3,value4。选择model1.field1,…,model1.fieldn,model2.field

我是rails的新手。我已经做了一个搜索查询

myresult=Model1。包括:model2',:model3。Model1.field1喜欢什么?或模型1。第二场怎么样?还是像model2.field1一样?还是像model2.field2一样?还是像model2.field3一样?还是像model3.field1一样?value1,value1,value2,value2,value3,value4。选择model1.field1,…,model1.fieldn,model2.field1..,model3.field2

现在我听说这不是一个好的做法。另一个我发现的是有人说用了阿雷尔的连接。但Arel似乎相对较新,对我来说,它似乎更倾向于SQL注入。有人能推荐一种在RubyonRails中实现这一点的好方法吗

多谢各位
Sai

如果您试图跨多个字段执行全文搜索,则不希望在SQL中执行此操作

您应该使用特殊的全文搜索系统,如Sphinx或Solr

查看Thinking Sphinx Rails Sphinx API:


如果您试图跨多个字段进行全文搜索,则不希望在SQL中执行此操作

您应该使用特殊的全文搜索系统,如Sphinx或Solr

查看Thinking Sphinx Rails Sphinx API:


您正在与框架进行斗争。Arel是按照Rails的方式进行查询的方法,这是您的问题

正确使用Arel时,它不容易SQL注入。您需要签出此页面:

在模型中创建一些作用域并将它们链接在一起以创建查询


但正如Winfield所说,最好使用Sphinx或Soir进行一些高效的全文搜索。

您正在与框架作斗争。Arel是按照Rails的方式进行查询的方法,这是您的问题

正确使用Arel时,它不容易SQL注入。您需要签出此页面:

在模型中创建一些作用域并将它们链接在一起以创建查询


但正如Winfield所说,最好使用Sphinx或Soir进行一些高效的全文搜索。

model2和model3都有很多关系,该查询工作正常。我只希望在rails中有更好的方法来实现这一点。model2和model3都有一个has-many关系,并且这个查询工作得很好。我只想用一种更好的方式在rails中实现这一点。谢谢您的评论。我所做的应用程序没有自己的体系结构,因此实现sphinx对我来说很困难。另外,忘了强调我提到的限制是我们没有接触模型。唯一的办法似乎是阿雷尔,正如@allesklar为我的模块所说的。。。!嘿,Sai,如果你是一名员工或顾问,现在是时候回退了——你做错了——你可以把这些限制和你已经有的限制结合起来,但这会给你带来更多的痛苦,而不是为这份工作使用正确的工具。祝你好运谢谢你的评论。我所做的应用程序没有自己的体系结构,因此实现sphinx对我来说很困难。另外,忘了强调我提到的限制是我们没有接触模型。唯一的办法似乎是阿雷尔,正如@allesklar为我的模块所说的。。。!嘿,Sai,如果你是一名员工或顾问,现在是时候回退了——你做错了——你可以把这些限制和你已经有的限制结合起来,但这会给你带来更多的痛苦,而不是为这份工作使用正确的工具。祝你好运