在 rails 索引 api 中使用 concat

Use of concat in rails index api

我正在研究 api,我希望在单个数组中包含不同状态的数据。

def filter_index_by_admin
  articles = []
  articles.concat(Article.pending.map { |article| ArticlePresenter.new(article)._show})
  articles.concat(Current.user.articles.where(status: 'approved').map { |article| ArticlePresenter.new(article)._show})
  articles.concat(Current.user.articles.where(status: 'rejected').map { |article| ArticlePresenter.new(article)._show})
  articles.concat(Current.user.articles.where(status: 'saved').map { |article| ArticlePresenter.new(article)._show(user_included: true, comments_included: true)})
  render json: { articles: articles }, status: :ok                                          
end

在上面 api 命名文章中有一个数组,我在其中连接数据 在第三行,我正在获取所有用户创建的所有文章的索引,这些文章的状态为待处理。

在第四行,我将当前用户的文章与状态 approved 连接起来,在第五行与状态 rejected 和第六行相同状态 已保存.

我知道这不是脏代码。

那么,有什么办法可以做到更复杂吗?

你可以这样做:

articles = Current.user.articles.where(status: ['pending', 'rejected', 'approved', 'saved']).map { |article| ArticlePresenter.new(article)._show})

更新

如果您正在使用 rails 5+

articles = Article.where(user_id: Current.uer.id, status: ['rejected', 'approved', 'saved']).or(Article.pending).map { |article| ArticlePresenter.new(article)._show})