在查找条件中使用变量字符串

时间:2012-10-21 16:38:25

标签: ruby-on-rails string conditional-statements

我有一个字符串变量如下:

the_style = @house.style   # this is a string variable and contains the value "modern"

如果我按如下方式在数据库中搜索:

Building.find(:last, :conditions => [" style = ?", "#{the_style}" ]) 

我收到上述错误,但是如果我在字符串值中进行硬编码就可以了:

Building.find(:last, :conditions => [" style = ?", "modern" ]) 

将字符串变量放入查找条件的正确方法是什么?

3 个答案:

答案 0 :(得分:1)

为什么使用引号只是为了逃避它们?

Building.find(:last, :conditions => [" style = ?", the_style ]) 

答案 1 :(得分:0)

不能确切地说出导致错误的原因,但是我会为这种事做出命名范围

class Building < ActiveRecord::Base
  scope :by_style, lambda { |style| where("style = ?", style) }
  # ...
end

在您的控制器中,您可以执行

Building.by_style(@house.style).last

答案 2 :(得分:0)

您可以使用where方法:

Building.where(style: @house.style).first