【发布时间】:2012-08-11 11:45:49
【问题描述】:
我的 rails 应用程序中有一个 DailyQuote 模型,其中包含股票的日期和价格。已为此模型捕获数据库中的数据,包括周末。周末价格值已设置为 0。
我想将周六和周日的所有周末价格更改为周五的价格。在 Ruby 中执行此操作的最佳方法是什么?要确定日期是在星期六还是星期日,并将其值更改为该周末的星期五?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3
我的 rails 应用程序中有一个 DailyQuote 模型,其中包含股票的日期和价格。已为此模型捕获数据库中的数据,包括周末。周末价格值已设置为 0。
我想将周六和周日的所有周末价格更改为周五的价格。在 Ruby 中执行此操作的最佳方法是什么?要确定日期是在星期六还是星期日,并将其值更改为该周末的星期五?
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3
TFM 展示了一种识别星期几的有趣方法:
t = Time.now
t.saturday? #=> returns a boolean value
t.sunday? #=> returns a boolean value
【讨论】:
on_weekend? 方法。 Time.now.on_weekend? #=> true if saturday or sunday 另外,on_weekday? 则相反。
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)。
【讨论】:
saturday? 和 sunday? 也在这里使用。
Date.today.on_weekend?。
class Time
def is_weekend?
[0, 6, 7].include?(wday)
end
end
time = Time.new
puts "Current Time : " + time.inspect
puts time.is_weekend?
【讨论】:
[0, 6, 7].include?(wday)。
【讨论】:
Date.today.instance_eval { 星期六? ||星期日? }
【讨论】:
Date.today.instance_eval { saturday? || sunday? || holiday?(:it) }
在 ruby 的两个日期范围内检查周末(星期六和星期日)
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
【讨论】: