Ruby on rails Rails中的高级查找

Ruby on rails Rails中的高级查找,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,除了最明显的,我真的很讨厌Rails的搜索引擎。当事情变得比以前更先进时,我总是求助于SQL Model.find(:all, :conditions => ['field>? and field<? and id in (select id from table)', 1,2]) 有人能创建一个find方法来满足我的需求吗 问候, Jacob如果满足您的需要,只需使用binarylogic的Searchlogic gem即可。 您可以这样做:如果满足您的需要,只需使用bin

除了最明显的,我真的很讨厌Rails的搜索引擎。当事情变得比以前更先进时,我总是求助于SQL

Model.find(:all, :conditions => ['field>? and field<? and id in (select id from table)', 1,2])
有人能创建一个find方法来满足我的需求吗

问候,


Jacob

如果满足您的需要,只需使用binarylogic的Searchlogic gem即可。
您可以这样做:

如果满足您的需要,只需使用binarylogic的Searchlogic gem即可。 给你:

未经测试


未经测试

有时AR会在复杂的嵌套条件下阻塞,但理论上您应该能够做到这一点:

AnswersRegistration.first(:conditions => { :question => { :validation_question => true },
                                           :sale_registration_id => id },
                          :include => :answer) 

有时AR会在复杂的嵌套条件下阻塞,但理论上,您应该能够做到这一点:

AnswersRegistration.first(:conditions => { :question => { :validation_question => true },
                                           :sale_registration_id => id },
                          :include => :answer) 

谢谢你的回复。我知道有一些gem和插件可以帮上忙,但出于某种原因,我喜欢尽可能使用库存的东西——所以我希望原始问题得到回答。谢谢你的回答。我知道有一些gem和插件可以提供帮助,但出于某种原因,我喜欢在可能的情况下使用股票——所以我想回答最初的问题。你的模型是如何定义的?关联属于什么、有多少等等?没有答案,但我看到您正在find by sql调用中执行变量插值,以将ID作为where语句的参数。这种方法易于SQL注入。请尝试使用以下方法来防止这种情况:按sql查找[select…where…and sale\u registration\u id=?',id]Faisal>I know-我修改了示例,只选择了简单的方法。谢谢你的提示。你的模型是如何定义的?关联属于什么、有多少等等?没有答案,但我看到您正在find by sql调用中执行变量插值,以将ID作为where语句的参数。这种方法易于SQL注入。请尝试使用以下方法来防止这种情况:按sql查找[select…where…and sale\u registration\u id=?',id]Faisal>I know-我修改了示例,只选择了简单的方法。不过,谢谢你的提示。谢谢-这是Rails所能做到的吗?这样做我没有问题——我只是认为,几乎不用编写任何真正的SQL就可以实现它。只需执行:joins-Rails如何知道它应该是左连接?默认情况下,:joins使用内部连接。要进行左连接,您必须在answers\u注册上指定一些sql::joins=>左连接答案。answer\u id=answers.idThank-这是Rails的风格吗?这样做我没有问题——我只是认为,几乎不用编写任何真正的SQL就可以实现它。只需执行:joins-Rails如何知道它应该是左连接?默认情况下,:joins使用内部连接。要进行左连接,必须在answers\u注册上指定一些sql::joins=>左连接答案。answer\u id=answers.id
AnswersRegistration.first(:conditions => { :question => { :validation_question => true },
                                           :sale_registration_id => id },
                          :include => :answer)