2012-10-29 91 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]}