我有一个孩子模型,属于一个妈妈和爸爸。如何用不同的条件查询同一模型两次?
class Kid
belongs_to :mom
belongs_to :dad
end
class Mom
has_many :kids
has_many :dads, through: :kids
end
class Dad
has_many :kids
has_many :moms, through: :kids
end
现在我在做什么基础上,当它被创造了,从妈妈的年龄和距离是列出了爸爸的孩子。
def show
@dad = Dad.find(params[:id])
near = Mom.near(@user_location, 100, :select => "kids.*") # Geocoder gem
@kids = @dad.kids.joins(:mom).merge(near).order(age: :asc, created_at: :desc).page(params[:page])
end
我在名为is_online
的Mom模型上有一个布尔字段。我希望这个领域能够做到这一点,所以结果将不会基于near
方法或距离,并且在线妈妈们会在前面。因此,分页的结果会是什么样子:
online kid, 2 years old
online kid, 3 years old
offline kid, 4 years old, 4 miles away
offline kid, 5 years old, 5 miles away
我的问题是,我不知道如何让我的孩子只是一个范围,所以我没有做@online_kids
和@offline_kids
。我只是想保持它为@kids
。有什么建议么?
这对我来说有点不清楚。你想让你的'@ kids'变量保持什么? –
@MarekLipka我想让在线的孩子与离线的孩子在一起,所以只有1个范围是'@ kids'。我混淆了词的范围和查询,对不起。 – user2784630
所以你现在拥有它('@ kids'拥有'在线'孩子和'离线'孩子)。你想如何改进它? –