Rails LIKE - 查询无法正常工作

时间:2016-10-31 22:39:07

标签: sql ruby-on-rails postgresql rails-activerecord

我有一个房屋模型和business_model []列。此列可以设置为“唤醒”,“睡眠”或“唤醒,睡眠”,带有单选按钮,所有字符串。我想让所有的房子都包括business_model,例如“清醒”。

@house = (House.all).uniq.where("business_model like ?", "sleep")

我试过那段代码。仅当列只是“睡眠”时它才有效。当它“清醒,睡觉”时,它返回零。

为什么?

2 个答案:

答案 0 :(得分:6)

你需要在那里扔一些外卡。试试where("business_model like ?", "%sleep%")。请注意,这也会包含sleepingasleep等内容。

您可能需要考虑使用JSON数据库列,以便更好地控制查询。

答案 1 :(得分:3)

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

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

是的,你需要一张外卡让LIKE快乐。如果您不需要在属性的值中找到“sleep”,则不需要使用LIKE。

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

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