2013-02-27 64 views
0

我有一個表Program與字段calle 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> 

我收到此錯誤信息:

未定義的方法'存在的:符號:符號

有什麼建議?

+0

您正在使用控制器代碼中的視圖;您應該將該代碼移動到您的控制器。 – 2013-02-27 13:34:09

回答

0

而不是使用下面的語法:

Program.where(:symbol.exists => true) 

以下語法用於搜索記錄,其中的符號不​​爲零:

Program.where("symbol is not null") 
0

你的情況應該是這樣的

Program.where("symbol IS NOT NULL AND symbol != ''") 
0

簡單放,你不能直接調用你的finder方法中的符號。由於語法,它現在正在調用Symbol類的:symbol符號上的#exist方法。

我對ActiveRecord queries內存是有點不好,但你總是把一個簡單的字符串條件像

@programs = Program.where("symbol <> ''") 

它說符號不爲空,而不是一個空字符串無論是。

(這正好在你的控制器,然後你就可以使用控制器實例變量@programs在你看來你的選擇輸入。)