我有一个表Program
,其字段为Symbol
。
我想检索所有具有Symbol值的程序。意思不是空字符串,而不是空。
如何使用ActiveRecord构建此类查询?
这是我的代码:
<div class="control-group">
<%= f.label :program %>
<div class="controls">
<%= f.select :program_id, Program.where(:symbol.exists => true).collect {|c| [c.name + " " + c.symbol, c.id]}, {}, :class => 'chzn-select' %>
</div>
</div>
我收到此错误消息:
未定义方法`exists':符号:符号
有什么建议吗?
答案 0 :(得分:0)
而不是使用以下语法:
Program.where(:symbol.exists => true)
使用以下语法搜索符号不为零的记录:
Program.where("symbol is not null")
答案 1 :(得分:0)
您的情况应该是
Program.where("symbol IS NOT NULL AND symbol != ''")
答案 2 :(得分:0)
简单地说,你不能直接在你的finder方法中的符号上调用方法。由于语法原因,它目前在符号类的#exist
符号上调用:symbol
方法。
我对ActiveRecord queries的记忆有点不好,但你总是可以设置一个简单的字符串条件,如
@programs = Program.where("symbol <> ''")
表示符号不为空,也不是空字符串。
(这在您的控制器中,然后您将能够在视图中使用控制器实例变量@programs
作为您的选择输入。)