获取活动记录中组的第一个孩子
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% 等在驳回这个想法之前,不妨问问你的产品经理/首席执行官他们是否对这种类型的功能感兴趣。
这将使查找佣金发票变得非常简单。
【讨论】:
以上是关于获取活动记录中组的第一个孩子的主要内容,如果未能解决你的问题,请参考以下文章
如何在所有组的第一个孩子上设置 ImageView.VISIBLE,其他 ChildViews 应该隐藏在 ExpandableListView