2012-10-29 90 views
0

感謝您的時間!rails activerecord多查詢

這是一個簡單的問題,但我已經搜索了一段時間,仍然不能得到適合我的功能。

我在DB中得到一個名爲* lr_transaction_tables *的表,並且在它上面有一個class LrTransactionsTable < ActiveRecord::Base

我可以@entry_ary = LrTransactionsTable.find(:all)獲取整個表和目前它在視圖:

<table id="trans-war-table"> 
    <% @entry_ary.each do |item| %> 
     <tr> 
     <td><%= item.ltname %></td> 
     <td><%= item.name %></td> 
     </tr> 
    <% end %> 
</table> 

可是我怎麼獲取數據where the data under ltname column is "specific word",而不是它的全部。

我試過@entry_ary = LrTransactionsTable.find_by_ltname("specific word"),但它給我的undefined method每個」爲無錯誤:NilClass`

ltnamename是在表中的列名。

回答

2

對於梁2

LrTransactionsTable.find(:all, :conditions => {:ltname => "specific word"}) 

對於Rails 3的

@entry_ary = LrTransactionsTable.where(ltname: "specific word") 

OR

@entry_ary = LrTransactionsTable.where(["ltname =? ", "specific word"]) 
+0

':conditions => {...}'語法已被棄用。 – simonmenke

+0

@simonmenke: - 是的,我知道。他沒有指定他使用的紅寶石的版本,所以給出了兩個例子。謝謝。 – Salil

+0

謝謝Salil。有用! – mCY

0

試試這個:

@entry_ary = LrTransactionsTable.where(ltname: "specific word") 
1

我將使用where方法來設置一個條件:在你的控制器

LrTransactionsTable.find_ltname("specific word") 

LrTransactionsTable.where(:ltname => "specific word") 
1

嘗試最好的辦法,在模型

總是正確的查詢,並在模型中寫

def find_ltname(name) 
    where("ltname = ?", name) 
end 

或者你也可以創建一個範圍爲

scope :find_ltname, lambda{|name|{ :conditions => ["ltname = ?", name]}