关于循环数据库条目的快速问题。
比方说,我有用户在一个平台上发布他们的旅行。现在,用户可以说这些旅行是重复的-她/他每周二和周四都会进行这种旅行。
为了让事情变得更有趣,假设每次旅行都有附加的请求,其他用户可以发出请求。他们可以为每一次重复的旅行提出这些请求。
对于如何在后端处理这样的案例,有什么想法吗?使用Rails和Postgres。
提前感谢!
发布于 2016-12-23 01:09:21
User
has_many :trips
Trip
belongs_to :user
has_many :requests
Request
belongs_to :user
belongs_to :trip
在Trip
上添加recurring_start
和recurring_end
属性,还可能在Request
上添加recur
属性。我不知道你需要为每次旅行创建任何额外的记录,是吗?
如果是这样的话,您希望您的业务逻辑来处理它。类似于Sidekiq,它有一个查询对象,可以获取到期的定期行程,并使用(例如)更新的开始日期和结束日期创建新的行程…
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-23 01:08:20
由于每个trip可以有不同的请求,因此它们都需要自己的单独ID。将它们与非循环trip完全相同对待是有意义的,但有一种情况除外:当trips的创建者想要编辑或删除循环trip的所有实例时。为此,您可能希望为定期旅行创建一个附加表,该表具有从定期旅行ID到旅行ID的一对多关系,并允许用户拥有定期旅行ID和旅行ID。这样,用户界面就可以逻辑地显示这两种类型,并且它们不会丢失。
只需确保每当编辑或删除行程时,定期行程表都会更新。这可以通过简单地禁止编辑或删除作为循环行程一部分的行程来实现,或者使trips表存储一个可选的循环行程ID。
https://stackoverflow.com/questions/41288293
复制相似问题