lib/modules/sport_time.rb
module SportTime
def to_race_time(secs)
m = (secs/60).floor
s = (secs - (m*60))
t = sprintf("%02d:%.2f\n",m,s)
return t
end
def time_to_float(tim)
dirty = tim.to_s
min, sec = dirty.split(":")
seconds = (min.to_i * 60) + sec.to_f
seconds.round(4)
end
end
class Event
extend SportTime
before_save :sporty_save
private
def sporty_save
self.goal_time = self.class.time_to_float(goal_time)
end
end
events.rb 模型
class Event < ActiveRecord::Base
validates_presence_of :course, :goal_time, :race_length, :user_id
attr_accessible :course, :goal_time, :race_length, :user_id
belongs_to :user
end
问题:当我尝试创建一个目标时间为“1:15.55”(字符串)的事件时,它不是被保存为 75.55(浮点数),而是被保存为 1.0(浮点数)......所以无论我在做什么类 mixin 显然不起作用。
我对使用模块很陌生,所以我很难弄清楚为什么我不能理解我在这里做错了。任何帮助表示赞赏,谢谢。
注意:视图的浮点到字符串转换确实有效。