gpt4 book ai didi

mysql - 您将如何在 Rails 应用程序的数据库/模型中存储营业时间?

转载 作者:IT老高 更新时间:2023-10-29 00:01:28 24 4
gpt4 key购买 nike

我正在创建一个 Rails 应用程序,用于存储企业的营业时间和营业时间。最初,我想简单地使用文本数据类型并让它成为自由格式:

"Monday to Friday 9am to 5pm
Saturday 11am to 4pm
Closed Sundays"

但是,要求已更改,我需要根据当前日期和时间检查小时数,并在 View 中显示“打开”或“关闭”。比如:

class Business < ActiveRecord::Base

def open?
# Something like ...
Time.now > open_time && Time.now < close_time
end

end

那么,在存储一周中每一天的小时数方面,解决这个问题的最佳方法是什么?业务是否应该简单地 has_many :open_blocks (或其他)有开放和关闭时间?我应该将日期存储为字符串吗?

最佳答案

我目前正在为客户设置目录列表,我们希望为用户提供更大的灵 active 。所以:让用户设置几天的 block :

我们有(1-7 的整数)、开门(时间)、关门(时间),一些商店或景点有夏季和冬季开放时间,或者他们休假。根据schema.org您必须添加一个 valid_from(日期时间)和一个 valid_through(日期时间)。

通过此设置,用户可以创建他想要的任何内容:

# migration
class CreateOpeningHours < ActiveRecord::Migration
def change
create_table :opening_hours do |t|
t.integer :entry_id # your model reference
t.integer :day
t.time :closes
t.time :opens
t.datetime :valid_from
t.datetime :valid_through
end
end
end

模型示例:

class OpeningHour < ActiveRecord::Base

belongs_to :entry

validates_presence_of :day, :closes, :opens, :entry_id
validates_inclusion_of :day, :in => 1..7
validate :opens_before_closes
validate :valid_from_before_valid_through

# sample validation for better user feedback
validates_uniqueness_of :opens, scope: [:entry_id, :day]
validates_uniqueness_of :closes, scope: [:entry_id, :day]

protected
def opens_before_closes
errors.add(:closes, I18n.t('errors.opens_before_closes')) if opens && closes && opens >= closes
end

def valid_from_before_valid_through
errors.add(:valid_through, I18n.t('errors.valid_from_before_valid_through')) if valid_from && valid_through && valid_from >= valid_through
end

end

使用该设置,您可以轻松创建一个 is_open?模型中的方法。目前我没有设置is_open?方法,但如果有人需要,请给我一个机会!我想我会在接下来的几天内完成它。

关于mysql - 您将如何在 Rails 应用程序的数据库/模型中存储营业时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3349021/

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