gpt4 book ai didi

sql - 如何根据 ActiveRecord 中的条件在每第 n 个项目中插入?

转载 作者:行者123 更新时间:2023-11-29 13:54:22 25 4
gpt4 key购买 nike

假设我有一个posts 表,其中有一个 bool 列sponsored

有什么方法可以让我获得一个 ActiveRecord 关系,其中每个第 n 个帖子都是(最好是随机的)赞助帖子?如果 n 可以变化,则加分。

我更愿意在数据库而不是 Ruby 数组中执行此操作,因为我希望能够像现在一样对结果进行分页。

我目前最好的想法是这样的:

sponsored_ids = Post.where(sponsored: true).select :id
normal_ids = Post.where(sponsored: false).select :id
ordered_ids = inject_sponsored_posts(sponsored_ids, normal_ids)
Post.where(id: ordered_ids) # But this wont preserve order :/

这不是特别理想。

最佳答案

如果你循环浏览你的帖子,你可以使用 .each_slice :

<% @posts.each_slice(x) do |post_group| %>
<% post_group.each do |post| %>

<% end %>

<% ... spondored ... %>
<% end %>

--

如果球太低,我可以删除它。将 id 注入(inject) SQL 查询是最有效的方法(根据评论)。

关于sql - 如何根据 ActiveRecord 中的条件在每第 n 个项目中插入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35091351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com