2016-07-01 66 views
0

回到今天的日期爲便於演示:說我包括模塊TodayDynamicDate在到模型下面Foo的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',那麼您將遇到麻煩 –