我正在寻找一种更新给定模型的计数器缓存的漂亮方法.
这是我的模型:
class GameParticipation < ActiveRecord::Base
belongs_to :game, counter_cache: true
end
Run Code Online (Sandbox Code Playgroud)
而且:
class Game < ActiveRecord::Base
has_many :game_participations
end
Run Code Online (Sandbox Code Playgroud)
这不是比像下面的代码迭代每个元素更好的东西吗?
Game.pluck(:id).map{|g_id| Game.reset_counters(g_id, :game_participations) }
Run Code Online (Sandbox Code Playgroud)
(我正在使用Rails4和activerecord)
我有一个 rails 4 应用程序,它正在做一个背景演算。所以用户按下一个按钮,它会为长计算启动一个后台作业(使用 delay_job)并到达一个等待页面。尽管微积分是异步完成的,但我想找到一种方法来警告用户并在微积分完成后自动重新加载页面。
我查看了几种解决方案:
如果您对此问题有任何明智的解决方案,或者对我在列出的想法中的局限性提出任何建议。
在我的 Rails 应用程序中,我有一个需要大量数据库访问的长计算。
简而言之,我的计算用了 25 秒。
在后台作业(一个大的单个工人)中实现相同的计算时,相同的计算需要两倍的时间(即 50 秒)。我尝试了几种技术将工作放在后台进程中,没有对我的表现产生影响 => 使用 DelayJob/Sidekiq/在我的轨道内但在为工作创建的线程中执行该过程,但所有对我的影响都相同我的表演*2。
这种性能差异只存在于 rails 的“生产”环境中。看起来我的后台工作中没有完成由 rails 完成的优化。
我的技术环境如下=>
有没有人知道这种影响可能来自哪里?