Rails在范围表中找到特定条目

时间:2011-04-18 23:08:45

标签: ruby-on-rails scope subset

新的铁路......仍在努力掌握所有“方法”

表称为历史。

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

现在我想查找表的@compa子集是否包含closedate =特定日期的条目。我尝试过各种各样的方法,但似乎没什么用。

示例:

if (@compa.has_value?(tmp))

不起作用。

我应该在子集中工作,还是回到表中并做一个新的范围?我怎么能在子集中工作...我很遗憾我不确定。

1 个答案:

答案 0 :(得分:2)

所以你会想要这样的东西:

if(@compa.include?(tmp))

查看@compa是否具有值tmp

但是@compa包含非封闭的属性。所以你想要:

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

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

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

由于@compa是一个ActiveRecord关系(因为你调用了scoped),你可以通过执行以下操作来查询它:

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

链接:

Array#include

Enumerable#find

exists?