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」(文字列) の goal_time でイベントを作成しようとすると、75.55 (float) として保存されるのではなく、1.0 (float) として保存されます。クラスのミックスインは明らかに機能していません。
私はモジュールを扱うのにかなり慣れていないので、なぜうまくいかないのかを理解するのに苦労しています。ここで間違っています。助けていただければ幸いです。
注: ビューの float から string への変換は機能します。