Rails中查询通过仅限于最新记录的关联可以使用Active Record的has_one
和has_many
关联方法结合order
和limit
方法来实现。
对于has_one
关联,可以使用order
方法按照创建时间(或其他字段)降序排序,然后使用limit
方法限制只返回一条记录,即最新的记录。示例代码如下:
class User < ApplicationRecord
has_one :latest_post, -> { order(created_at: :desc).limit(1) }, class_name: 'Post'
end
对于has_many
关联,可以使用order
方法按照创建时间(或其他字段)降序排序,然后使用limit
方法限制只返回指定数量的记录,即最新的记录。示例代码如下:
class User < ApplicationRecord
has_many :latest_comments, -> { order(created_at: :desc).limit(5) }, class_name: 'Comment'
end
上述示例中,User
模型通过has_one
关联定义了latest_post
方法,可以通过user.latest_post
获取该用户的最新文章;User
模型通过has_many
关联定义了latest_comments
方法,可以通过user.latest_comments
获取该用户的最新评论(最多返回5条)。
这种查询通过仅限于最新记录的关联在以下场景中非常有用:
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云