gpt4 book ai didi

ruby-on-rails - 使用 postgres 在 rails 中保存日期和数据

转载 作者:行者123 更新时间:2023-11-29 14:37:50 25 4
gpt4 key购买 nike

我正在使用 postgresrails。我有一个酒店预订 市场应用程序。我正在尝试为房间实现 unavailable dates。因此,为了从主机获取不可用日期,我为主机提供了一个日历来检查不可用的日期。因此,为了保存这些数据之王,我将 json 字段 添加到 table room 中,其中包含 unavailable dates 这可能看起来像这样

"availability":{"days":[{"available":3,"date":"2017-01-19"},{"available":0,"date":"2017-01-20"},{"available":2,"date":"2017-01-22"},{"available":5,"date":"2017-01-23"}]}

available 表示该日期可用的房间数量。 p>

从长远来看,这样可以吗?我在这里有点担心,因为这种设计的缺点是每天都保留 json 记录,并且在一天过去时进行一些内务处理以从 json 中删除日期。我在这里想不出另一个选择。这是这里唯一的选择吗?谢谢..

最佳答案

JSON 和 HSTORE 数据类型是无模式数据的强大工具,但是当您将它们用于应用程序中应该规范化的核心数据时,这几乎不是最佳解决方案。您将不得不处理数据重复和过于复杂的应用程序代码。

相反,您应该看的是普通的关系建模:

class Hotel < ActiveRecord::Base
has_many :rooms
has_many :reservations, through: :rooms
end

class Customer < ActiveRecord::Base
has_many :reservations
end

class Room < ActiveRecord::Base
belongs_to :hotel
has_many :reservations
end

# check_in - date or datetime
# check_out - date or datetime
class Reservation < ActiveRecord::Base
belongs_to :room
belongs_to :customer
has_one :hotel, through: :room
end

在这里,您将使用 reservations 表来存储入住和退房时间。您可以查询 rooms 表或 hotelsreservations 表的连接,以检查哪些日期不可用。有很多方法可以做到这一点,这有点超出了这个问题的范围。

关于ruby-on-rails - 使用 postgres 在 rails 中保存日期和数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41638245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com