Ruby Sequel - 如何将急切图与订单和限制关联起来,没有重复

问题描述

考虑这些模型:

class Member < Sequel::Model
  one_to_many :member_integrations

  # columns: [:id,:name]
end

class MemberIntegration < Sequel::Model
  many_to_one :member
  one_to_many :member_integration_fields

    # columns: [:member_id,:name]
end

class MemberIntegrationField < Sequel::Model
  many_to_one :member_integration

  # columns: [:id,:member_integration_id,:name]   
end

我需要加载分页成员,按 MemberIntegrationField#name 过滤和排序他们

members = Member.exclude(name: nil).eager_graph(member_integrations: [:member_integration_fields])
members = members.where(Sequel.ilike(Sequel[:member_integration_fields][:name],'%John%'))
members = members.order(Sequel[:member_integration_fields][:name].desc)

所有这些都有效,但它返回重复的成员,因此分页不起作用。

Member.count # 5246

members.limit(50,0).all.count # 25
members.count # 31473

我知道为什么成员会重复,但我不知道如何正确获取它们。因此,分页获得错误的总计数 31473,并获取错误的成员计数 25

值得一提的是,ilike 必须过滤成员,但最终,应返回过滤成员的所有成员集成。

感谢任何帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)