私のアプリケーションでは、最も近い日付イベントにデフォルト設定される現在のイベントは 1 つだけです。このイベントをさまざまな場所で取得する必要がありますが、変更されないため、キャッシュするのが理にかなっています。私が知っている方法は2つあります。
class Event < ActiveRecord::Base
CURRENT_EVENT = Event.where('starts_on >= ?', Time.now).
order('starts_on ASC').limit(1).first
# OR
def self.current_event
@@current_event ||= Event.where('starts_on >= ?', Time.now).
order('starts_on ASC').limit(1).first
end
end
どれが一番いいでしょうか?または他の代替手段はありますか?スレッドセーフではないため、@@ クラス変数の使用はお勧めできません。