ruby-on-rails - 从每个类别中获得 5 个问题,如果少于 5 个 - 重复现有直到 5

标签 ruby-on-rails ruby

我有属于类别的问题。

我想将每个类别中的 5 个问题插入到一个数组中,如果一个类别中没有 5 个问题 - 那么我需要插入重复项,以便每个类别中有 5 个问题。

如果每个类别中有 5 个或更多问题我会使用以下代码,但是当我在一个类别中只有 1 或 2 个问题时,显然它不起作用:

a = []
Category.all.each do |category|
  category.questions.order(position: :asc).limit(5).each do |question|
    a << question
  end
end

最佳答案

a = Category.pluck(:questions).flat_map do |questions|
  questions.order(postion: :asc).limit(5).cycle.take(5)
end

关于ruby-on-rails - 从每个类别中获得 5 个问题,如果少于 5 个 - 重复现有直到 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27357306/

相关文章:

ruby - 神秘的 ruby : Vector Assignment Example

html - 如何在每次请求时自动预编译 css.erb 文件

ruby-on-rails - Ruby on Rails : Sending large pictures using send_data/send_file results in errors

ruby-on-rails - 在 Rails 中将数据导出到 CSV

ruby-on-rails - 如何在 Rails 中拥有不同的环境变量值?

ruby-on-rails - 如何使用 rspec、rails 和 simplecov 获取 View 规范的覆盖范围?

arrays - 将多维数组转换为散列而不覆盖值

ruby-on-rails - Rails 中城市/地区/国家的 URL

ruby - 搜索二维数组的算法

ruby-on-rails - Rails 应用程序中的 Rails : How are you using application_controller. rb 是新手吗?