我指的是here描述的哈希条件。你能使用多种类型的哈希条件吗?像平等和子集一样?我试过了,它给了我一个语法错误:
@colleges = College.where(category: "#{@university_type}" and "us_news_ranking < #{@rank_low}").first
可以这样做,还是我的代码错了?
答案 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