Sql Rails-LIKE-Query无法正常工作

Sql Rails-LIKE-Query无法正常工作,sql,ruby-on-rails,postgresql,rails-activerecord,Sql,Ruby On Rails,Postgresql,Rails Activerecord,我有一个房屋模型和商业模型专栏。此列可以设置为“唤醒”、“睡眠”或“唤醒、睡眠”,带有单选按钮,全部为字符串。我想让所有的房子,包括商业模式,例如“清醒” @house = (House.all).uniq.where("business_model like ?", "sleep") 我试过那个密码。只有当列只是“睡眠”时,它才起作用。当它处于“清醒,睡眠”状态时,返回零 为什么呢 你需要在那里投一些外卡。请尝试where(“类似业务模型?”,%sleep%”。请注意,这还将捕获诸如睡眠和睡

我有一个房屋模型和商业模型专栏。此列可以设置为“唤醒”、“睡眠”或“唤醒、睡眠”,带有单选按钮,全部为字符串。我想让所有的房子,包括商业模式,例如“清醒”

@house = (House.all).uniq.where("business_model like ?", "sleep")
我试过那个密码。只有当列只是“睡眠”时,它才起作用。当它处于“清醒,睡眠”状态时,返回零


为什么呢

你需要在那里投一些外卡。请尝试
where(“类似业务模型?”,%sleep%”
。请注意,这还将捕获诸如
睡眠
睡眠
之类的内容


你可能想考虑使用一个JSON数据库列,它可以让你对查询有更多的控制。

< p>你需要在其中抛出一些通配符。请尝试
where(“类似业务模型?”,%sleep%”
。请注意,这还将捕获诸如
睡眠
睡眠
之类的内容


你可能想考虑使用一个JSON数据库列,它让你对查询有更多的控制。

< P>你都乱了。code>House.all将返回一个数组,这意味着
。where
将出错,因为您没有在
ActiveRecord::Relation
的实例上调用它。你想要:

House.where("business_model LIKE ?", "sleep").uniq
是的,你需要一个通配符才能让你喜欢的人开心。如果不需要在属性值中查找“sleep”,则不需要使用LIKE

House.where("business_model LIKE ?", "sleep%").uniq

不过,
.uniq
也向我跳了一下。
House
表是否包含重复项?如果是这样的话,那可能就没有必要了。

你们都乱七八糟了
House.all
将返回一个数组,这意味着
。where
将出错,因为您没有在
ActiveRecord::Relation
的实例上调用它。你想要:

House.where("business_model LIKE ?", "sleep").uniq
是的,你需要一个通配符才能让你喜欢的人开心。如果不需要在属性值中查找“sleep”,则不需要使用LIKE

House.where("business_model LIKE ?", "sleep%").uniq

不过,
.uniq
也向我跳了一下。
House
表是否包含重复项?如果是这样的话,这可能不是(即“不应该”)必要的。

请注意,您的代码正在数组结果集中调用
where
。您可能需要重新了解ActiveRecord界面。类似于
House。where('business\u model like?','%sleep%')
是您所追求的。@henners66不,永远不要参考,使用PostgreSQL时参考。请注意,您的代码正在对数组结果集调用
where
。您可能需要重新了解ActiveRecord界面。类似于
House。where('business\u model like?','%sleep%')
是您所追求的。@henners66不,从不参考,在使用PostgreSQL时参考。他为什么要使用JSON列?逗号分隔的字符串可能会出现太多问题。如果数据库列最终是“A,B”,但查询是“B,A”(因为有一天他可能会想查询多个数据库)。大多数人只是觉得数据库擅长存储特定的数据,所以为什么要试着自己动手做呢?@coreyward肯定是这样,但看起来并不像OP所问的那样。仍然值得认真考虑。他为什么要使用JSON列?逗号分隔的字符串可能会出现太多问题。如果数据库列最终是“A,B”,但查询是“B,A”(因为有一天他可能会想查询多个数据库)。大多数人只是觉得数据库擅长存储特定的数据,所以为什么要试着自己动手做呢?@coreyward肯定是这样,但看起来并不像OP所问的那样。仍然值得认真考虑。