使用多个哈希条件查询Rails

时间:2014-03-10 04:25:16

标签: ruby-on-rails

我指的是here描述的哈希条件。你能使用多种类型的哈希条件吗?像平等和子集一样?我试过了,它给了我一个语法错误:

@colleges = College.where(category: "#{@university_type}" and "us_news_ranking < #{@rank_low}").first

可以这样做,还是我的代码错了?

2 个答案:

答案 0 :(得分:3)

  

可以这样做,还是我的代码错了?

你的代码是错的。 and没有参与其中;如果您需要多个条件,请向where提供几个键/值。在这种情况下,您需要两个where调用 - 一个用于相等条件,一个用于小于条件。

您还应该永远直接将值插入到字符串中。使用占位符,以便ActiveRecord可以转义它们并阻止SQL注入。

@colleges = College.where(category: @university_type).where("us_news_ranking < ?", @rank_low).first

答案 1 :(得分:0)

您可以结合两种条件:

@colleges = College.where("category = ? AND us_news_ranking < ?", 
              @university_type, 
              @rank_low).first

此外,有时更喜欢使用哈希变量:

@colleges = College.where("category = :type AND us_news_ranking < :rank",
              type: @university_type, 
              rank: @rank_low).first