我正在创建一个应用程序,在创建和更新文章时需要管理员批准。我使用书面记录来完成此操作,将每次更新存储到文章中。
更新文章时,“已发布”字段设置为 false。因为我想显示文章的最新批准/发布版本,我需要一种范围来检查文章的当前版本是否被批准,如果不是,它会搜索以前的版本,直到找到批准/发布的一个。
def self.published(query={})
where(query).map do |article|
article.published? ? article : article.last_published_version
end.compact! || []
end
def published?()
published
end
def last_published_version()
return self if published?
published_versions = versions.select{ |version| version.reify.try(:published?) }
published_versions.present? ? published_versions.last.reify : nil
end
现在,由于我在map
这里使用,我的查询返回一个数组而不是 ActiveRecord 关系。我想在已发表的文章上链接其他查询,所以这是一个问题。
例如,我想做:
Article.published.where(...).order_by(...)
等
有什么想法可以做到这一点吗?