我正在使用 Ruby on Rails 3.2.2,我想通过“指定”/“过滤”这些关联对象的属性值来检索/限定关联对象。也就是说,此时我正在使用以下代码:
class Article < ActiveRecord::Base
def self.search_by_title(search)
where('articles.title LIKE ?', "%#{search}%")
end
end
class ArticleAssociation < ActiveRecord::Base
def self.search_by_article_title(search)
joins(:article).where('articles.title LIKE ?', "%#{search}%")
end
end
在上面的代码中,where('articles.title LIKE ?', "%#{search}%")
子句重复了两次,所以我认为可以通过 DRY 原则对其进行改进:是否可以 Article.search_by_title
直接在方法中使用该 ArticleAssociation.search_by_article_title
方法?
典型的用例是:
ArticleAssociation.search_by_article_title("Sample string")
Article.search_by_title("Sample string")