获取活动记录中组的第一个孩子

Posted

技术标签:

【中文标题】获取活动记录中组的第一个孩子【英文标题】:Get the first child of a group in active record 【发布时间】:2017-06-23 21:19:12 【问题描述】:

我们有一个推荐计划。当被推荐用户订阅时,推荐人应获得第一张发票上应付金额的百分比。

referral_ids = (an array of a bunch of user_ids)

我可以为每个被推荐的用户获得一张发票,如下所示:

invoices = Invoice.where(user_id: referred_user_ids, renewal: false).group(:user_id).pluck(:amount_due)

但是,由于 amount_due 可能因发票而异,我想知道如何确保从 GROUP BY 返回的记录是该组中的第一个/最旧的记录。提前致谢。

【问题讨论】:

按创建日期排序? order 将只订购组。我需要每个grouped 项目中的第一个。用 group 调用 order 只会给你结果的顺序。这有意义吗? 类似于这里发生的事情,但希望简化/使用活动记录:***.com/questions/5140785/mysql-order-before-group-by 【参考方案1】:

这可能不是您希望的解决方案,但也许(出于业务原因)您应该考虑在发票表中添加一个新字段,例如

referral_fee:boolean(默认为 false) referral_fee_percent(默认为 0)

然后,您可以为每个附属公司提供多张佣金发票,和/支持浮动佣金

发票 1 - 100% 发票 2 - 50% 等

在驳回这个想法之前,不妨问问你的产品经理/首席执行官他们是否对这种类型的功能感兴趣。

这将使查找佣金发票变得非常简单。

【讨论】:

以上是关于获取活动记录中组的第一个孩子的主要内容,如果未能解决你的问题,请参考以下文章

计算 SQL 中组的重叠时间(以秒为单位)

如何在所有组的第一个孩子上设置 ImageView.VISIBLE,其他 ChildViews 应该隐藏在 ExpandableListView

如何计算熊猫数据框中组的每对行之间的函数

从每组的第一行和最后一行获取值

获取第n个连续组的第一行/最后一行

在R中改变ggplot中组的顺序