2016-07-01 4 views
0

で今日の日付を返します。私はモデル以下FooにモジュールTodayDynamicDateに含めています言う:Railsは動的にデモの目的のために実行

# app/models/concerns/today_dynamic_date.rb 
module TodayDynamicDate 
    extend ActiveSupport::Concern 

    def todays_date 
    Date.today 
    end 
end 

#app/models/foo.rb 
class Foo < ApplicationRecord 
    include TodayDynamicDate 
end 

#todays_dateの方法で混合すると、どのように動作することを利用した場合、私は疑問に思ってそれが欲しい。

メソッド#todays_dateは、メソッドが実行された日付を動的に返すようにします。私はそれがレールサーバーが起動された静的な日付を返すことを望んでいません。

例:

は、私は、今日Friday, July 1st, 2016をサーバーを起動すると言います。

Foo.new.todays_date 
    => Fri, 01, Jul 2016 

サーバーが稼働し続け、それが今Tuesday, July 5th, 2016次のとおりです。ここでは、私はこの方法は、今日が返すことを期待するものです。その同じ方法はアプリで呼ばれ、ここで私はそれを返すことを期待するものです。

# dynamically returning the date that the method was called 
Foo.new.todays_date 
    => Tues, 05, July 2016 

私はそれがこの返さないようにしたい:

# returning a static date 
Foo.new.todays_date 
    => Fri, 01, Jul 2016 

が質問:ウィル私の実装は、動的の日付を返しますか?それが動的な日付を返さない場合、その混合メソッドでどうすればいいですか?todays_date

答えて

2

答えははいです。 Date.todayを呼び出すたびに、現在の日付が返されます。

todays_dateはクラス(静的変数とは何を参照していますか)、そのメソッドではありません。

+0

ありがとうございます。 'todays_date'がクラスメソッドであった場合、静的な日付を返すと言っていますか? – Neil

+1

メソッドは、クラスメソッドまたはインスタンスメソッドのいずれかで、常に古いキャッシュされた値ではなく、今日の日付を返します。クラス変数を使用している場合、つまり、@@ today = todays_dateを実行し、コード内で '@@ today'を使用した場合、問題が発生します –

関連する問題