Newb开发者。需要在网站上放置一些计数某些歌曲播放次数的计数器。它与歌曲模型有关,但并非必须是,而不是任何一个歌曲实例。只是想知道我在哪里放置一个像常数一样的计数器?
if Subscription.where("band_id = ? and fan_id = ?", @band.id, @fan.id).any? && @fan.donating
@song.total_sub_donate_plays += 1
@song.total_month_sub_donate_plays += 1
site_wide.counter_total +=1
site_wide.counter_total_month += 1
end
答案 0 :(得分:0)
如果您有memcached / redis设置,请使用Rails.cache
http://api.rubyonrails.org/classes/ActiveSupport/Cache/Store.html#method-i-increment
类似的东西:
if Subscription.where("band_id = ? and fan_id = ?", @band.id, @fan.id).any? && @fan.donating
@song.total_sub_donate_plays += 1
@song.total_month_sub_donate_plays += 1
Rails.cache.increment("stats/counters/total")
Rails.cache.increment("stats/counters/#{Date.current.strftime("%Y/%m")}", {expires_in: 40.days})
end
然后你可以:
Rails.cache.read("stats/counters/total")
Rails.cache.read("stats/counters/#{Date.current.strftime("%Y/%m")}")
另一个选项是创建聚合数据表。从长远来看,这将让你有更多的控制权。
类似的东西:
class DailySongData
# event_date: date,
# sub_count:integer
# listing_count:integer
end
这将有助于整理您的数据以供将来学习