gpt4 book ai didi

ruby-on-rails-3 - 返回 found_rows 的计数以及有限的事件记录查询结果

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

请原谅这个问题的 noobee 性质。

我有一个故事模型。每个故事都有一个存储在其自己的数据库列中的类别属性。我有一个名为 :in_categories 的命名范围,它返回所有具有包含在给定类别数组中的类别的故事:

  scope :in_categories, lambda {|categories|
where(:category => categories)
}

我现在想做的是限制响应的长度,同时返回数据库中响应行的总数,忽略限制。例如,假设我将范围更改为:

  scope :in_categories, lambda {|categories|
where(:category => categories).limit(20)
}

但实际上有 35 个故事在类别数组中有一个类别。如何取回 20 个事件记录对象和 35 个计数变量?我需要进行第二个数据库查询吗?我在 mysql 中遇到过 FOUND_ROWS_ 函数,但我使用的是 postgresql。

最佳答案

看看http://www.postgresql.org/message-id/1185863074.10580.91.camel@linda.lfix.co.uk

There is no equivalent. Use

BEGIN;
SELECT * FROM mytable OFFSET X LIMIT Y;
SELECT COUNT(*) AS total FROM mytable;
END;

(To ensure consistent results, both queries should be done in a single transaction.)

手头没有 rails env 因此只有伪代码

Story.transaction do
story.in_categories
story.where(:category => categories).count
end

有关事件记录交易的更多信息 http://api.rubyonrails.org/classes/ActiveRecord/Transactions/ClassMethods.html

实际上我们不使用事务,只是按顺序执行这些查询。从来没有遇到过问题,但这当然取决于您的项目。

关于ruby-on-rails-3 - 返回 found_rows 的计数以及有限的事件记录查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15074145/

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