在 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})
我正在研究 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})