Commit 91951aa4068493fff78e960969c247f525f73f22

Authored by Victor Costa
Committed by Rodrigo Souto
1 parent 16d23214

api: multiple articles hits

app/models/article.rb
... ... @@ -634,6 +634,11 @@ class Article < ActiveRecord::Base
634 634 self.hits += 1
635 635 end
636 636  
  637 + def self.hit(articles)
  638 + Article.where(:id => articles.map(&:id)).update_all('hits = hits + 1')
  639 + articles.each { |a| a.hits += 1 }
  640 + end
  641 +
637 642 def can_display_hits?
638 643 true
639 644 end
... ...
test/unit/article_test.rb
... ... @@ -2154,4 +2154,14 @@ class ArticleTest < ActiveSupport::TestCase
2154 2154 assert_equivalent [a1,a2], Article.display_filter(nil, user)
2155 2155 end
2156 2156  
  2157 + should 'update hit attribute of article array' do
  2158 + a1 = fast_create(Article)
  2159 + a2 = fast_create(Article)
  2160 + a3 = fast_create(Article)
  2161 + Article.hit([a1, a2, a3])
  2162 + Article.hit([a2, a3])
  2163 + assert_equal [1, 2, 2], [a1.hits, a2.hits, a3.hits]
  2164 + assert_equal [1, 2, 2], [a1.reload.hits, a2.reload.hits, a3.reload.hits]
  2165 + end
  2166 +
2157 2167 end
... ...