2009-04-09 4 views
4

私は1つの日付要素と3つの時間要素を含むフォームを持っています。これは、1つの日付で3つの時間イベントが発生するため、ユーザーはその日付を3回入力する必要がないためです。Ruby Rails Time.changeが期待通りに機能しない...私はドキュメントをチェックした!

サーバー側では、3つのdatetimeオブジェクトを取得するために1つの日付と3回を組み合わせたいと考えています。私はちょうどのような何かをすることができると思っていた:

time_object.change(:day => date_object.day, :month => date_object.month, :year => date_object.year) 

これは働いていない。ここに私が働くことを期待して書いたシンプルなテストがあります:

def before_validation 
    logger.info("show_time = " + self.show_time.to_s) 
    self.show_time.change(:year => 2012) 
    self.show_time.change(:minute => 30) 
    logger.info("show_time = " + self.show_time.to_s) 
    end 

2つのプリントステートメントは異なるはずですが、同じです。誰もが時間と日付のオブジェクトをマージする最良の方法を知っていますか?

答えて

15

あなたはそれを割り当てる必要があります。スクリプト/コンソールに行く場合:

>> t = Time.now 
=> Thu Apr 09 21:03:25 +1000 2009 
>> t.change(:year => 2012) 
=> Mon Apr 09 21:03:25 +1000 2012 
>> t 
=> Thu Apr 09 21:03:25 +1000 2009 
>> t = t.change(:year => 2012) 
=> Mon Apr 09 21:03:25 +1000 2012 
>> t 
=> Mon Apr 09 21:03:25 +1000 2012 

ので、多分:

self.show_time = self.show_time.change(:year => 2012) 

はあなたのために働くことができます。私はその解決策についてどのように感じるのか分かりませんが、うまくいくはずです。

+1

を使用する分を変更することに注意してください。時間のrdocsを見て、私に "変更"メソッドを使用させる何かを見つけることができませんでした。この答えをありがとう、私を助けてくれた。 – Tass

+0

これは2012年の誰かから...ええと...こんにちは、あなたは電話しましたか? – wrongusername

0

また、私は少しの運を持つTimeオブジェクトの部分を変更しようとしていたあなたは:min代わりの:minute

関連する問題