1

レールに慣れていない....まだすべての「メソッド」を把握しようとしている

テーブルは履歴と呼ばれます。

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

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

例:

if (@compa.has_value?(tmp))

うまくいきません。

サブセットで作業する必要がありますか、それともテーブルに戻って新しいスコープを実行する必要がありますか? サブセットで作業するにはどうすればよいですか...確かに何かが欠けています。

4

1 に答える 1

2

したがって、次のようなものが必要です。

if(@compa.include?(tmp))

@compa に値があるかどうかを確認するには、tmp.

ただし@compa、closedate 以外の属性が含まれています。したがって、次のようになります。

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

その値が含まれていない場合、これは nil を返します。それ以外の場合は、とclosedate等しいオブジェクトを返しますtmp

ただし、これを処理するために SQL を使用しないのはなぜですか。

は ActiveRecord Relation であるため@compa(scoped を呼び出したため)、次のような方法でさらにクエリを実行できます。

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

リンク:

配列#インクルード

Enumerable#find

存在しますか?

于 2011-04-18T23:16:19.590 に答える