我的 rails 应用程序中有一个 DailyQuote 模型,其中包含股票的日期和价格。已为此模型捕获数据库中的数据,包括周末。周末价格值已设置为 0。
我想将周六和周日的所有周末价格更改为周五的价格。在 Ruby 中执行此操作的最佳方法是什么?要确定日期是在星期六还是星期日,并将其值更改为那个周末的星期五?
我的 rails 应用程序中有一个 DailyQuote 模型,其中包含股票的日期和价格。已为此模型捕获数据库中的数据,包括周末。周末价格值已设置为 0。
我想将周六和周日的所有周末价格更改为周五的价格。在 Ruby 中执行此操作的最佳方法是什么?要确定日期是在星期六还是星期日,并将其值更改为那个周末的星期五?
TFM展示了一种识别星期几的有趣方法:
t = Time.now
t.saturday? #=> returns a boolean value
t.sunday? #=> returns a boolean value
today = Date.today
if today.saturday? || today.sunday?
puts "Today is a weekend!"
end
您也可以在一周中的任何其他日子执行此操作。Ruby 非常棒,并且提供了很多这样的酷方法。我建议当你被难倒时,通过运行.methods
它来查看类可用的内容。因此,如果您运行Date.today.methods
,您将看到这些可用。
require 'date'
today = Date.today
ask_price_for = (today.wday == 6) ? today - 1 : (today.wday == 0) ? today - 2 : today
或者
require 'date'
today = Date.today
ask_price_for = (today.saturday?) ? today - 1 : (today.sunday?) ? today - 2 : today
ask_price_for
现在保存一个您想要询问价格的日期。
获取与您日期相对应的实际价格取决于您的模型和您的 ORM 库(即 ActiveRecord)。
class Time
def is_weekend?
[0, 6, 7].include?(wday)
end
end
time = Time.new
puts "Current Time : " + time.inspect
puts time.is_weekend?
Date.today.instance_eval { 星期六?|| 星期日?}
检查红宝石中两个日期范围内的周末(星期六和星期日)
weekend_days = [0,6]
if (start_date.to_date..end_date.to_date).to_a.select {|k| weekend_days.include?(k.wday)}.present?
# you code
end