我第一次尝试在我的 Rails 应用程序中使用 HABTM 关系。下图显示了模型及其相互之间的关系:
目前,我正在显示一个区域内的所有成员,其中包含以下内容:
<% @region.members.each do |member| %>
<%= link_to member.name, member %>
<% end %>
我正在尝试按成员各自的级别对成员列表进行排序/排序。然后我想让成员按字母降序排列。
因此,members_controller 代码目前是默认的:
@members = Member.all
我可以按字母顺序排列结果:
@members = Member.order("name DESC").all
但我不知道如何使用相关模型的数据对成员记录进行排序。可能会有三个级别;慈善、基本和订阅。我计划在页面顶部设置一个仅显示订阅成员的块。订阅成员不应再次显示在页面上。
@subscribed_members = Member.where(:level == 1).order("name DESC").all
但是,如您所见,我不知道如何逐级过滤该块。
谁能指出我正确的方向,或者可能指向这个教程?我已经阅读了有关 HABTM 关系的 Rails 指南,但它似乎只涵盖了模型。
编辑
在尝试了这个建议之后,我现在有以下内容:
@members = Member.all
@subscribedmembers = Member.include(:levels)
.where("levels.name == 'subscriber'")
如何在区域视图中使用该方法?
<% @region.subscribedmembers.each do |member| %>
<%= member.name %>
<% end %>
那是行不通的,因为它正在寻找一个不存在的名为 subscrivedmembers 的相关模型。