プロジェクト モデルには、start_date と end_date の 2 つの日時属性があります。ここで、現在の時刻がこれらの日付の間にあるすべてのプロジェクトが必要です。最初に start_date を使用して次のようなことを試しました。
@projects = Project.where(:start_date <= Time.now)
しかし、これはエラーを返します:
comparison of Symbol with Time failed
何か案は?ありがとう!
プロジェクト モデルには、start_date と end_date の 2 つの日時属性があります。ここで、現在の時刻がこれらの日付の間にあるすべてのプロジェクトが必要です。最初に start_date を使用して次のようなことを試しました。
@projects = Project.where(:start_date <= Time.now)
しかし、これはエラーを返します:
comparison of Symbol with Time failed
何か案は?ありがとう!
一部の ORM とは異なり、アクティブ レコードは、シンボル クラスをメソッドで拡張して、等価以外の式をこの方法で表現できるようにしません。あなたはただしなければならない
Project.where('start_date <= ?', Time.now)
squeal gem はこの種のものを追加し、あなたが書くことを可能にします
Project.where{start_date < Time.now}
これはできません: :start_date <= Time.now. <=記号と日付を演算子と比較しています。
クエリに条件を追加する場合は、文字列として渡します。
Project.where("start_date <= ?", Time.now);
残念ながら、日付を比較する where 句を使用すると、SQL に落とし込む必要があります。代わりに次のようにしてみてください。
@projects = Project.where(['projects.start_date <= ?', Time.now])