ruby-on-rails - 每组 Rails LIMIT

标签 ruby-on-rails postgresql activerecord ruby-on-rails-3.2

我试图将每个类别的记录限制为 5,但我最终只返回了 5 条记录。

如何在 Rails ActiveRecord 中翻译这条 sql 语句?

SELECT *
FROM "jobs" a
WHERE (
  SELECT COUNT(*)
  FROM jobs
  WHERE ID = a.ID
) <= 5
AND jobkey_confirmation IS NOT NULL
AND EXTRACT(MONTH from created_at) = EXTRACT(MONTH from now())

我只能执行以下操作,如上所述只返回 5 条记录:

scope :confirmed_this_month, where("jobkey_confirmation IS NOT NULL AND EXTRACT(MONTH from created_at) = EXTRACT(MONTH from now())").group("category").limit(5).order("created_at DESC")

最佳答案

可以使用 find_by_sql 吗?

Job.find_by_sql('SELECT * FROM "jobs" a WHERE (SELECT COUNT(*) FROM jobs WHERE ID = a.ID ) <= 5 AND jobkey_confirmation IS NOT NULL AND EXTRACT(MONTH from created_at) = EXTRACT(MONTH from now()))

或者您希望用 AR Calls 完全取代它?

-- 从评论中提取代码----

def self.limited_grouped_jobs 
    find_by_sql("SELECT * FROM jobs a WHERE (SELECT COUNT(*) FROM jobs WHERE ID = a.ID ) <= 5 AND jobkey_confirmation IS NOT NULL AND EXTRACT(MONTH from created_at) = EXTRACT(MONTH from now())")
end

关于ruby-on-rails - 每组 Rails LIMIT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12957459/

相关文章:

ruby-on-rails - 更新 Rails 4 和 PostgreSQL json 列中的单个键/值对?

sql - 检查至少存在一条记录

ruby-on-rails - 我如何遍历哈希的哈希?

database - 从充满数字的数据库创建图形或图表的软件包?

ruby-on-rails - 如何正确转义 Active Record where 子句中的正则表达式

ruby-on-rails - Rails 事件记录 : Map vs pluck vs as_json

php - 拆分字符串以放入 CodeIgniter Active Record SQL 查询中

sql - ActiveRecord:find_by_sql 并包括

ruby-on-rails - rails 7 : Change association of nested attributes

ruby-on-rails - 带有 Capybara have_css 匹配器的 Rspec 不起作用