私は次のことを試しました:
class DataEntry
include DataMapper::Resource
property :id, Serial, :key => true
property :some_data, Text, :length => 1000000
property :created_at, DateTime
after :save do |entry|
if entry.created_at.strftime('%T') == "00:00:00"
@new_datetime = ((entry.created_at.to_time+1)-3600).to_datetime
entry.update!(:created_at => @new_datetime)
end
return true
end
end
これにより、エントリが00:00:00(hours:min:sec)の場合、エントリが保存された時刻が00:00:01に変更されます。私は自分のコードが汚れていることを知っています(私はruby、datamapperなどを学んでいます、私は少し初心者です;))、しかしさらに悪いことに、それはモデルに何の影響も与えません。フックが存在しないかのように保存されます。私は何が間違っているのですか?
(おそらく重要なこと:私はこれをsinatraで使用しているので、n.hoursなどのrailsヘルパーにアクセスできません!)
前もって感謝します!;)