2011-04-18 6 views
1

レールに新しい....まだすべての "メソッド"を把握しようとしていますRailsはスコープ付きテーブル内の特定のエントリを見つけます

テーブルを「ヒストリ」と呼びます。

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

ここで、テーブルの@compaサブセットには、closedate =特定の日付のエントリが含まれているかどうかを確認したいと思います。私はあらゆる種類の方法を試みましたが、何も動作していないようです。

例:

if (@compa.has_value?(tmp)) 

動作しません。

サブセットで作業するか、テーブルに戻って新しいスコープを使用する必要がありますか?私はどのようにサブセットで働くことができますか...私は何かが間違っていると確信しています。 @compaが値を持っている場合、tmpが見

if(@compa.include?(tmp)) 

答えて

2

だからあなたのような何かをしたいと思います。

@compaには、closedate以外の属性が含まれています。だから、あなたが望む:それはその値が含まれていない場合

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

これは、それ以外の場合はtmpに等しいclosedateを持っているオブジェクトを返します、nilを返します。

しかし、なぜこの処理するためにSQLを使用しない:

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

リンク::

@compaので

を(あなたはスコープと呼ばれるので)ActiveRecordの関係で、あなたのような何かをすることによって、より多くのそれを照会することができます

Array#include

Enumerable#find

exists?

+0

ありがとうございます! whereメソッドはうまくいきます!あなたは私に甘やかされ、| o | o ['closedate']を検索しますか?それは私のために働くようには見えない、私は唯一を得る。 – Dwarfer

関連する問題