使用 Rails 3.2。我有以下代码:
# photo.rb
class Photo < ActiveRecord::Base
before_create :associate_current_user
after_save :increase_user_photos_count
after_destroy :decrease_user_photos_count
private
def associate_current_user
current_user = UserSession.find.user
self.user_id = current_user.id
end
def increase_user_photos_count
current_user = UserSession.find.user
User.increment_counter(:photos_count, current_user.id)
end
def decrease_user_photos_count
current_user = UserSession.find.user
User.decrement_counter(:photos_count, current_user.id)
end
end
在创建新记录之前,它会搜索current_user
. 如果一次只有 1 条新记录,这没关系。但是如果要创建 100 条记录,它会搜索相同的current_user
100 次。肯定有性能问题。
- 我不希望它在每次创建记录/更新照片计数等时一直查找当前用户。
- 重构后,这是否会影响其他也在使用他们的帐户上传照片的用户?
注意:由于某些原因,我不能使用counter_cache
andphotos_controller.rb
因为我遵循这个例子:http ://www.tkalin.com/blog_posts/multiple-file-upload-with-rails-3-2-paperclip-html5-和-没有-javascript
谢谢。