1

定期的な DB エントリに関する簡単な質問です。

ユーザーが旅行をプラットフォームに投稿しているとします。これで、ユーザーはこれらの旅行が定期的であると言うことができます - 彼女/彼は毎週火曜日と木曜日にその旅行を行います.

さらに興味深いことに、すべての Trip に他のユーザーが作成できる Request が添付されているとします。そして、定期的な旅行ごとにこれらのリクエストを行うことができます。

バックエンドでこのようなケースをどのように処理するかについてのアイデアはありますか? Rails と Postgres の使用。

前もって感謝します!

4

2 に答える 2

1
User
  has_many :trips

Trip
  belongs_to :user
  has_many :requests

Request
  belongs_to :user
  belongs_to :trip

recurring_startとのrecurring_end属性を追加しTrip、おそらく のrecur属性を追加しますRequest。旅行ごとに追加のレコードを作成する必要があるかどうかはわかりませんね。

その場合は、ビジネス ロジックでそれを処理する必要があります。Sidekiq のようなもので、定期的に予定されている Trip をフェッチし、(たとえば) 開始日と終了日を更新して新しい Trip を作成する Query オブジェクトを使用します。</p>

class Trip < ApplicationModel
  scope :recurring, -> { where(recur: true) }
  scope :due_for_recurrence, -> { recurring.where(Trip.arel_table[:end_date].lt(Time.now)) }
end

関連するレコードも自動的に複製/複製したい場合は、 DeepCloneableなどを使用できます。

于 2016-12-22T17:09:20.647 に答える
0

旅行ごとに異なるリクエストがある可能性があるため、すべての旅行に個別の ID が必要です。旅行の作成者が定期的な旅行のすべてのインスタンスを編集または削除したい場合を除いて、それらを非定期的な旅行とまったく同じように扱うことは理にかなっています。そのために、定期的な旅行 ID から旅行 ID への 1 対多の関係を使用して、定期的な旅行用の追加のテーブルを作成し、ユーザーが旅行 ID だけでなく定期的な旅行 ID を所有できるようにすることもできます。そうすれば、ユーザー インターフェイスは 2 種類を論理的に表示でき、迷うことはありません。

旅行が編集または削除されるたびに、定期旅行テーブルが更新されるようにしてください。これは、繰り返しの旅行の一部である旅行の編集または削除を単純に禁止するか、trips テーブルにオプションの繰り返し旅行 ID を格納することで実現できます。

于 2016-12-22T17:08:20.213 に答える