在最后 has_many 个关联中搜索具有特定值的实例

Ransack searching for instances with specific value in last of has_many associations

我在 rails 项目中使用 ransack gem 进行排序和过滤。

有一个 Child 模型,它有很多课程订阅。 Courseperiod_idChild 有一个方法 last_subscription_period。 如果能回答以下任何问题,那就太好了:

  1. 如何过滤children这种方法的搜索结果?
  2. 选择 children 的 SQL 查询是什么,最后订阅具有特定 period_id?

型号:

Child has_many subscriptions
Subscription belongs_to child
Subscription belongs_to course

children: id
subscriptions: child_id, course_id, created_at
courses: period_id
SELECT l.child_id, co.period_id
FROM (
    SELECT s.child_id, s.course_id
    FROM (
        SELECT child_id, MAX(created_at) AS latest_subscription
        FROM subscriptions
        GROUP BY child_id
    ) AS l
    JOIN subscription AS s
        ON s.child_id = l.child_id
        AND s.created_at = l.latest_subscription
) AS l
JOIN courses AS co
ON co.id = l.course_id