0

@events というコレクションがあり、次のように定義しています。

@organization.owned_events.current.reverse

ただし、実際にやりたいのは、実際には最新ではなく、過去30日間に最新または期限切れになったものです。私は試した

@organization.owned_events.current-30.days.reverse

しかし、これは空のコレクションを提供しただけです。これは、私が実際に望んでいるのは current-30.days ではなく、実際には current AND current-30.days であるためだと思います

しかし、それをどのように書くかはわかりません。net_thirty のように現在の代わりに別の用語を何らかの形で定義して、それを最新または過去 30 日以内にすることはできますか?

4

1 に答える 1

1

イベント モデルでは、次のことができます。

scope :from, ->(duration){ where('your_datetime_field_here > ?', Time.zone.now - duration ) }

日付または日時フィールドでフィルタリングしたいので、日付フィールドでフィルタリングしたい場合は、前のオプションは日時フィールド用です。

scope :from, ->(duration){ where('your_date_field_here > ?', Time.zone.today - duration ) }

->(){}スコープに渡すブロックです。

これらのスコープは次のように使用します。

any_events.from(30.days)

あなたの場合:

@organization.owned_events.from(30.days)

今日以降ではないイベントをフィルタリングすることもできます。

scope :from, ->(duration){ where('your_date_field_here BETWEEN ? AND ? ', Time.zone.today - duration, Time.zone.today ) }
于 2013-07-28T00:00:13.773 に答える