中間テーブルを用いた多対多の関係(その 3)
今度は License
の側から Employee
のリストを取得してみましょう。
rails g controller licenses index
app/views/licenses/index.html.erb
<h1>資格取得者一覧</h1> <table border> <thead> <tr><th>資格</th><th>取得者</th></tr> </thead> <tbody> <% @licenses.each do |l| %> <tr> <td><%= l.name %></td> <td><%= l.employees.empty? ? 'なし' : l.employees.map{ |e| e.name }.join(',') %></td> </tr> <% end %> </tbody> </table>
config/routes.rb
Sample2::Application.routes.draw do resources :employees resources :licenses # (略) end
再びサーバを起動して http://localhost:3000/licenses にアクセスしてみましょう。
こちらも中間テーブルを通して対応するリストが取得できました。
さて、今回使った has_and_belongs_to_many
は、中間テーブルが外部キー以外を持たない場合にしか使えません。そうでない場合にどうするか、ということを次回以降に書いていきたいと思います。