gpt4 book ai didi

ruby-on-rails - 如何使用 Ruby on Rails 进行 OR SQL 搜索?

转载 作者:行者123 更新时间:2023-12-01 06:26:37 24 4
gpt4 key购买 nike

我刚刚开始学习 Ruby on Rails,还没有找到这个问题的答案。

我有以下代码:

@products = Product.find(:all,
:conditions => ["productsubtype_id = ?", @productsubtypes],
:order => "name")

@productsubtypes 是一个数组(当前包含来自另一个 SQL 查询的两个对象,与此几乎相同) - 它生成的 SQL 如下:

SELECT * FROM `products` WHERE (productsubtype_id = 2,3)  ORDER BY name

正如你所看到的,上面的内容是无效的(至少对于 MySQL 来说不是) - 我需要找到一种方法来更改原始的 Ruby 代码以生成以下 SQL 代码(或接近它的代码:

SELECT * FROM `products` WHERE (productsubtype_id = 2 
OR productsubtype_id = 3) ORDER BY name

有没有办法改变原始代码来完成我需要的事情,或者我在这里完全走错了路?

感谢您的帮助,

胡安

最佳答案

这些解决方案都有效,但 ActiveRecord 已经内置了支持,可以了解在使用条件哈希时传递的是数组还是单个 id。示例:

User.all(:conditions => {:id => [1,2,3]})

生成查询

SELECT * FROM `users` WHERE (users.`id` IN( 1,2,3 )) 

所以你会想要

@products = Product.find(:all,
:conditions => {:productsubtype_id => @productsubtypes},
:order => "name")

但是,对于更复杂的查询,您需要在条件中传递 sql 或使用插件(即conditions_fu)

关于ruby-on-rails - 如何使用 Ruby on Rails 进行 OR SQL 搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/789698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com