2011-04-18 45 views
1

新的rails ......仍然试图掌握所有的“方法”Rails在范围表中找到一个特定的条目

表称为历史。

@compa = History.scoped(:limit => 10,:conditions => {:name => "IBM"}, :order => "closedate ASC") 

现在我想查找该表的@compa子集是否包含closedate =特定日期的条目。我尝试了各种方法,但似乎没有任何工作。

例子:

if (@compa.has_value?(tmp)) 

不工作。

我应该在子集中工作,还是回到表格并做一个新的范围?我如何在子集中工作...我错过了我确定的事情。

回答

2

所以,你会想是这样的:

if(@compa.include?(tmp)) 

要查看是否有@compa值,tmp

但是,@compa包含closedate以外的属性。所以,你会想:

@compa.find{|o| o['closedate'] == tmp} 

这将返回nil,如果它不包含该值,否则将返回确实有closedate等于tmp的对象。

但是为什么不使用SQL来处理这个问题:

由于@compa是一个ActiveRecord关系(因为你叫范围的),您可以更通过执行类似查询它:

@compa.where(:closedate => tmp).exists? 

链接:

Array#include

Enumerable#find

exists?

+0

谢谢! Where方法很好用!你可以放纵我并解释| o |和o ['closedate']在发现?这似乎不适用于我,我只得到零。 – Dwarfer 2011-04-19 01:43:29

相关问题