で今日の日付を返します。私はモデル以下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
?
ありがとうございます。 'todays_date'がクラスメソッドであった場合、静的な日付を返すと言っていますか? – Neil
メソッドは、クラスメソッドまたはインスタンスメソッドのいずれかで、常に古いキャッシュされた値ではなく、今日の日付を返します。クラス変数を使用している場合、つまり、@@ today = todays_dateを実行し、コード内で '@@ today'を使用した場合、問題が発生します –