2011-08-05 28 views
0

當沒有參數傳遞給下面的時候,我希望能夠選擇所有文章。在Rails(Activerecord)中匹配任何內容Where條件

class Article < ActiveRecord::Base 

    named_scope :filter_by, lambda 
    { 
    |*args| {:conditions => [(args.first || 'id') + " = ?", (args.second || '*is_anything*')]} 
    } 

end 

例如,Article.filter_by()應相同Article.all。達到此目的最簡單的方法是什麼?

+0

這聽起來像一個可怕的方式做到這一點,我掙扎,看你想要做什麼。你可以使用「IS NOT NULL」或「> 0」 – Yule

+0

只是想知道爲什麼你需要創建這個功能? – Ant

+0

@Ant ...爲了方便起見。然後我可以做Articles.filter_by('author','Paul')。filter_by('tag','rails') –

回答

1

如何:

named_scope :filter_by, lambda 
    { 
    |*args| {:conditions => (args.nil? || args.empty?) ? nil : [(args.first || 'id') + " = ?", (args.second || '*is_anything*')]} 
    } 
相關問題