【发布时间】:2023-03-29 07:55:02
【问题描述】:
Rails 3 Ruby 1.92 - 我有一个辅助方法,将对象上的 datetime 属性与当前日期和时间进行比较。
module StoreHelper
def initial_time(product)
if product.time_type == "Min"
initial_time = (product.time * 60)
elsif product.time_type == "Hrs"
initial_time = (product.time * 3600)
else
initial_time = 0
end
end
def time_based_price(product)
start_time = product.start_time
current_time = Time.now
expire_time = start_time + initial_time(product)
if (current_time <= expire_time) && (unit_sales(product)>= product.volume)
time_based_price = (product.price - product.boost_savings)
else
time_based_price = product.price
end
end
end
当我从我的视图中调用它时,我收到错误“未定义的方法 `to_datetime' for 0:Fixnum”。如果我将比较行 (current_time = current_time) 我得到错误“Fixnum 与时间的比较失败”
我尝试使用 .now、.current、.zone.now 来表示 Time 和 DateTime,但没有成功。当我从我的视图中调用 Time.zone.now 和 expire_time 值时,它们具有相同的格式:
2013-11-17 20:48:07 UTC - Time.zone.now
2013-11-17 16:15:00 UTC - expire_time
【问题讨论】:
-
start_time(product.start_time) 是什么类型?您是否尝试将product.start_time解析为 Time 类型? -
你试过.to_i日期吗?我认为将日期时间乘以一个数字将返回一个数字。这是那些有趣的转换之一。