2

「SessRequest」という名前のモデルがあります。このモデルには、「sess_start」(セッションの開始日時)フィールドと「sess_duration」(時間単位のセッション期間)フィールドが含まれています。したがって、セッションの終了時刻は次のとおりです。sess_start+sess_duration.hours「end_time」が現在の時刻より遅れているすべてのセッションを除外する必要があります。これに対応するモデルスコープは次のようになります。

SESSION_ASSUMED_PAST_AFTER_HRS = 3
  scope :past,
    lambda{where('(sess_start < :current_time) AND (sess_start IS NOT NULL)', :current_time => 0.days.from_now - SESSION_ASSUMED_PAST_AFTER_HRS.hours)};

このスコープは、定数SESSION_ASSUMED_PAST_AFTER_HRSではなく、「sess_duration」データベースフィールドに基づいて作成したいと思います。データベースにとらわれないまま、これをどのように行うことができますか?

4

1 に答える 1

1

squeel gemを使用して、複雑なSQLクエリやさまざまなRDBMSシステムを作成できます。

コードは次のようになります。

SESSION_ASSUMED_PAST_AFTER_HRS = 3
scope :past, where { (sess_start < SESSION_ASSUMED_PAST_AFTER_HRS.hours.ago) & (sess_start != nil ) }
于 2013-03-25T07:31:42.877 に答える