Commit 745bd5056dd98a333b26d0f37ac91fb7e0c1abd9
1 parent
04962ef3
Exists in
master
and in
22 other branches
Named scope to filter article by array of types
Showing
2 changed files
with
14 additions
and
0 deletions
Show diff stats
app/models/article.rb
... | ... | @@ -444,6 +444,7 @@ class Article < ActiveRecord::Base |
444 | 444 | named_scope :galleries, :conditions => { :type => 'Gallery' } |
445 | 445 | named_scope :images, :conditions => { :is_image => true } |
446 | 446 | named_scope :text_articles, :conditions => [ 'articles.type IN (?)', text_article_types ] |
447 | + named_scope :with_types, lambda { |types| { :conditions => [ 'articles.type IN (?)', types ] } } | |
447 | 448 | |
448 | 449 | named_scope :more_popular, :order => 'hits DESC' |
449 | 450 | named_scope :more_comments, :order => "comments_count DESC" | ... | ... |
test/unit/article_test.rb
... | ... | @@ -1744,4 +1744,17 @@ class ArticleTest < ActiveSupport::TestCase |
1744 | 1744 | assert_nil article.author_id |
1745 | 1745 | end |
1746 | 1746 | |
1747 | + should 'return articles with specific types' do | |
1748 | + Article.delete_all | |
1749 | + | |
1750 | + c1 = fast_create(TinyMceArticle, :name => 'Testing article 1', :body => 'Article body 1', :profile_id => profile.id) | |
1751 | + c2 = fast_create(TextArticle, :name => 'Testing article 2', :body => 'Article body 2', :profile_id => profile.id) | |
1752 | + c3 = fast_create(Event, :name => 'Testing article 3', :body => 'Article body 3', :profile_id => profile.id) | |
1753 | + c4 = fast_create(RssFeed, :name => 'Testing article 4', :body => 'Article body 4', :profile_id => profile.id) | |
1754 | + c5 = fast_create(TextileArticle, :name => 'Testing article 5', :body => 'Article body 5', :profile_id => profile.id) | |
1755 | + | |
1756 | + assert_equivalent [c1,c2], Article.with_types(['TinyMceArticle', 'TextArticle']) | |
1757 | + assert_equivalent [c3], Article.with_types(['Event']) | |
1758 | + end | |
1759 | + | |
1747 | 1760 | end | ... | ... |