ruby-on-rails - 如何查询 ActiveRecord 以仅返回 enum = X、Y、Z 的每个对象的第一个实例?
问题描述
我们的 CMS 有一个 Article 模型,它使用枚举来定义文章类型。
enum display_format: {
webpage: 0,
blog: 1,
interactive: 2,
advertisement: 3,
experience: 4,
product_questions: 5
}
在我们的主页上,我显示每个类别中的最新文章,每个当前都作为单独的查询,就像这样。
Article.where(display_format: :webpage).order(:pub_date).first
Article.where(display_format: :blog).order(:pub_date).first
Article.where(display_format: :interactive).order(:pub_date).first
有没有办法在一个查询中返回这三个记录?
我可以使用Article.where(display_format: [:webpage, :blog, :interactive]).order(:pub_date)
然后过滤集合来获取每个类别的第一项,但我希望在 ActiveRecord 中有更有效的方法来执行此操作。
解决方案
如果您已按发布日期顺序对其进行排序,则可以使用.limit(n)
其中 n 是您想要获得的最新文章的数量。
您还可以使用.first(n)
或.last(n)
根据您获得所有结果的方式,它们将返回n
许多文章。
推荐阅读
- twisted - twisted:使用 uniq Perspective Broker TCP 连接进行多次登录
- usrp - 为什么 multi_usrp 不支持多个 B210 无线电?
- c - 遇到断点时如何在劳特巴赫中保存堆栈帧
- powerapps - 如何将多个数据字符串拆分为html表格
- oracle - 如何在Oracle中查找Long Datatype中列值的最大长度
- javascript - Javascript Clicker 客户队列按钮调用密码
- reactjs - `extraHeight` 属性对`react-native-keyboard-aware-scroll-view` 有什么作用
- rocketmq - RocketMQ 报“no name server, please set it”即使显式设置了name server
- reactjs - How can I add image elements to my page dynamically?
- javascript - 在应用程序脚本返回值之前加载 HTML 并触发函数