在我的Ruby on Rails应用程序中,我有一个模型Instance
,它属于另一个模型Zone
。 Zone
模型本身属于Country
模型。我正在获取一组Instance
个对象,如下所示:
scope :thisweek, -> { joins(:zone).where(zones: {created_at: ...}).includes(:zone)
我也想加入Country
到Zone
和Instance
,然后根据Instance
字段对结果zone.country.name
进行排序。有人可以帮我吗?
答案 0 :(得分:4)
您可以尝试以下操作:
scope :this_week, proc do
includes(zone: :country)
.where(zones: {created_at: whatever})
.order('countries.name ASC')
end
(我故意使用do/end
格式在每条指令的多行上显示)
另外,你应该知道的事情:
# if
Zone belongs_to :country
# then
Zone.includes(:country).where(countries: { id: 12 })
# ^ ^^
# but if
Zone has_many :countries
# then
Zone.includes(:countries).where(countries: { id: 12 })
# ^^ ^^
where
始终使用表格的名称,但includes
/ joins
使用模型中声明的关系名称。