首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >循环数据库条目

循环数据库条目
EN

Stack Overflow用户
提问于 2016-12-23 01:01:53
回答 2查看 48关注 0票数 1

关于循环数据库条目的快速问题。

比方说,我有用户在一个平台上发布他们的旅行。现在,用户可以说这些旅行是重复的-她/他每周二和周四都会进行这种旅行。

为了让事情变得更有趣,假设每次旅行都有附加的请求,其他用户可以发出请求。他们可以为每一次重复的旅行提出这些请求。

对于如何在后端处理这样的案例,有什么想法吗?使用Rails和Postgres。

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2016-12-23 01:09:21

代码语言:javascript
运行
复制
User
  has_many :trips

Trip
  belongs_to :user
  has_many :requests

Request
  belongs_to :user
  belongs_to :trip

Trip上添加recurring_startrecurring_end属性,还可能在Request上添加recur属性。我不知道你需要为每次旅行创建任何额外的记录,是吗?

如果是这样的话,您希望您的业务逻辑来处理它。类似于Sidekiq,它有一个查询对象,可以获取到期的定期行程,并使用(例如)更新的开始日期和结束日期创建新的行程…

代码语言:javascript
运行
复制
class Trip < ApplicationModel
  scope :recurring, -> { where(recur: true) }
  scope :due_for_recurrence, -> { recurring.where(Trip.arel_table[:end_date].lt(Time.now)) }
end

如果你也想自动克隆/复制相关的记录,你可以使用类似DeepCloneable的东西。

票数 1
EN

Stack Overflow用户

发布于 2016-12-23 01:08:20

由于每个trip可以有不同的请求,因此它们都需要自己的单独ID。将它们与非循环trip完全相同对待是有意义的,但有一种情况除外:当trips的创建者想要编辑或删除循环trip的所有实例时。为此,您可能希望为定期旅行创建一个附加表,该表具有从定期旅行ID到旅行ID的一对多关系,并允许用户拥有定期旅行ID和旅行ID。这样,用户界面就可以逻辑地显示这两种类型,并且它们不会丢失。

只需确保每当编辑或删除行程时,定期行程表都会更新。这可以通过简单地禁止编辑或删除作为循环行程一部分的行程来实现,或者使trips表存储一个可选的循环行程ID。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41288293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档