3

プロジェクト モデルには、start_date と end_date の 2 つの日時属性があります。ここで、現在の時刻がこれらの日付の間にあるすべてのプロジェクトが必要です。最初に start_date を使用して次のようなことを試しました。

@projects = Project.where(:start_date <= Time.now)

しかし、これはエラーを返します:

comparison of Symbol with Time failed

何か案は?ありがとう!

4

3 に答える 3

12

一部の ORM とは異なり、アクティブ レコードは、シンボル クラスをメソッドで拡張して、等価以外の式をこの方法で表現できるようにしません。あなたはただしなければならない

Project.where('start_date <= ?', Time.now)

squeal gem はこの種のものを追加し、あなたが書くことを可能にします

Project.where{start_date < Time.now}
于 2012-06-28T15:59:55.803 に答える
1

これはできません: :start_date <= Time.now. <=記号と日付を演算子と比較しています。

クエリに条件を追加する場合は、文字列として渡します。

Project.where("start_date <= ?", Time.now);
于 2012-06-28T16:00:04.970 に答える
0

残念ながら、日付を比較する where 句を使用すると、SQL に落とし込む必要があります。代わりに次のようにしてみてください。

@projects = Project.where(['projects.start_date <= ?', Time.now])
于 2012-06-28T16:00:10.400 に答える