在rails中使用变量作为列名

时间:2013-07-15 08:55:19

标签: sql ruby-on-rails database view haml

我正在尝试为我的网站设置两个环境,一个在开发服务器上,一个在实时服务器上。我想要在每台服务器上看到DB中可以看到哪些记录。我已经在我的包中创建了一个文件,对于开发,它有@show = "dev",而现在它有@show = "live"我已将它包含在应用程序布局的顶部,因此它位于每个页面上。然后在我的视图中,对于每个数据库调用,我想提出一些这样的条件:

- f = Event.find(:all, :conditions => ["#{@show} = 1"])

但它并没有选择@show作为变量,只是明确地使用它或忽略它。有没有一种简单的方法可以做到这一点,或者这不符合我的期望?

更新

我设法让它工作,但我必须将文件包含在每个单独的视图中,而不仅仅是在应用程序布局上...不理想,但它是一个解决方案:

= render "includes/dev_live"

- f = Event.find(:all, :conditions => {@show => 1})

2 个答案:

答案 0 :(得分:1)

我认为最好将变量更改为符号,即

@show = :dev
@show = :live

然后您的有效记录查询可能变为:

f = Event.find(:all, :conditions => {@show => 1})

答案 1 :(得分:0)

您需要将变量转换为实例变量。在条件下使用它。

你可以试试这个

f = Event.find(:all,:conditions => {@show.to_sym => 1})