嗨,我已经搜索过,但还没有找到这样做的方法

我有以下型号:

class Hierarchy < ActiveRecord::Base
  belongs_to :user
  belongs_to :family
end

.
class Family < ActiveRecord::Base
  #attributes rank:integer order:integer
  has_many :hierarchies
  has_many :users, :through => :hierarchies
end

.
class User < ActiveRecord::Base
  has_many :hierarchies
  has_many :families, :through => :hierarchies
end

有了 current_user 我需要得到他家人的所有其他成员,按等级分组,然后按列顺序排序。

我会提出我尝试过的内容,但实际上并没有那么多,而且这个查询超出了我的范围。
我正在使用 postgres。

最佳答案

我会采用以下方法..

我们必须更新用户模型:)

class User < ActiveRecord::Base
  has_many :hierarchies
  has_many :families, :through => :hierarchies
  has_many :family_members,
           -> { group('families.rank').order('families.order ASC') },
           through: :families, source: :users
end

然后很容易获得当前用户的所有成员:
current_user.family_members

10-08 04:24