在我的应用程序中,只有一个当前事件默认为最近的日期事件。我需要在不同的地方检索这个事件,因为它没有改变,所以缓存它是有意义的。我知道有两种方法:
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
哪一个是最好的?还是有其他选择?我知道不推荐使用@@ 类变量,因为它们不是线程安全的。