你可以使用Active Record的group
和order
方法来实现按组获取每个组的第一行。以下是一个示例代码:
假设你有一个名为User
的模型,其中有两个字段group_id
和name
,你想要获取每个组的第一行记录。
# 在User模型中添加以下代码
class User < ApplicationRecord
def self.first_row_per_group
# 使用group和order方法按group_id分组并按id升序排序
# select方法选择每个组的第一行记录
self.group(:group_id).order(:id).select('DISTINCT ON (group_id) *')
end
end
然后你可以在控制器或其他地方调用first_row_per_group
方法来获取每个组的第一行记录:
users = User.first_row_per_group
users.each do |user|
puts "Group ID: #{user.group_id}, Name: #{user.name}"
end
这个示例代码将会按照group_id
分组,并按照id
升序排序,然后选择每个组的第一行记录。你可以根据你的实际需求来修改和扩展这个代码。