diff --git a/app/models/article.rb b/app/models/article.rb index 95bb872..23dcdc5 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -634,6 +634,11 @@ class Article < ActiveRecord::Base self.hits += 1 end + def self.hit(articles) + Article.where(:id => articles.map(&:id)).update_all('hits = hits + 1') + articles.each { |a| a.hits += 1 } + end + def can_display_hits? true end diff --git a/test/unit/article_test.rb b/test/unit/article_test.rb index 658a735..a59a72f 100644 --- a/test/unit/article_test.rb +++ b/test/unit/article_test.rb @@ -2154,4 +2154,14 @@ class ArticleTest < ActiveSupport::TestCase assert_equivalent [a1,a2], Article.display_filter(nil, user) end + should 'update hit attribute of article array' do + a1 = fast_create(Article) + a2 = fast_create(Article) + a3 = fast_create(Article) + Article.hit([a1, a2, a3]) + Article.hit([a2, a3]) + assert_equal [1, 2, 2], [a1.hits, a2.hits, a3.hits] + assert_equal [1, 2, 2], [a1.reload.hits, a2.reload.hits, a3.reload.hits] + end + end -- libgit2 0.21.2