初めて、Rails アプリケーションで HABTM 関係を使用しようとしています。次の図は、モデルとそれらの相互関係を示しています。
現在、リージョン内のすべてのメンバーを次のように表示しています。
<% @region.members.each do |member| %>
<%= link_to member.name, member %>
<% end %>
メンバーのリストをそれぞれのレベルでソート/順序付けしようとしています。次に、メンバーをアルファベット順で並べ替えたいと思います。
したがって、 members_controller コードが現在のデフォルトです。
@members = Member.all
結果をアルファベット順に並べ替えることができます。
@members = Member.order("name DESC").all
しかし、関連モデルのデータを使用してメンバー レコードを並べ替える方法がわかりません。3 つのレベルがある可能性があります。チャリティー、ベーシック、サブスクリプション。ページの上部に、サブスクリプション メンバーのみを表示するブロックを配置する予定です。その後、サブスクリプション メンバーはページに再度表示されません。
@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 という関連モデルを探しているため、これは機能しません。