关于重复数据库条目的快速问题。
假设我有用户在平台上发布他们的旅行。现在,用户可以说这些旅行是重复的——她/他每周二和周四进行一次旅行。
为了让事情变得更有趣,假设每个行程都附加了其他用户可以提出的请求。他们可以为每次重复旅行提出这些请求。
关于如何在后端处理这样一个案例的任何想法?使用 Rails 和 Postgres。
提前致谢!
关于重复数据库条目的快速问题。
假设我有用户在平台上发布他们的旅行。现在,用户可以说这些旅行是重复的——她/他每周二和周四进行一次旅行。
为了让事情变得更有趣,假设每个行程都附加了其他用户可以提出的请求。他们可以为每次重复旅行提出这些请求。
关于如何在后端处理这样一个案例的任何想法?使用 Rails 和 Postgres。
提前致谢!
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 之类的东西,带有一个 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 之类的东西。
由于每次旅行都可能有不同的请求,因此他们都需要自己的个人 ID。将它们与非重复行程完全相同对待是有意义的,除了一种情况:当行程的创建者想要编辑或删除重复行程的所有实例时。为此,您可能希望为重复行程创建一个附加表,其中包含从重复行程 ID 到行程 ID 的一对多关系,并允许用户拥有重复行程 ID 和行程 ID。这样用户界面就可以逻辑地显示这两种,并且不会迷路。
只需确保每当编辑或删除行程时,定期行程表就会更新。这可以通过简单地禁止编辑或删除作为重复行程一部分的行程来实现,或者使行程表存储可选的重复行程 ID。