実現したいこと
modelとmodelを紐付けする際に親modelに対して複数のmodelを紐付けたいです
現状で困っていること
親クラス(User)に対して子クラス(Attenbdance)、(Base)の二つのクラスを紐付けしたいのですが、has_manyとbelongs_toの記述の仕方がわかりません。親クラス(User)に対して子クラスである(Attendance)は紐付けることができているのですがBaseクラスが上手くいきません。汗
この記述の仕方で紐づけることができるでしょうか?
お手数ですがご教授いただけないでしょうか。。
発生している問題・エラーメッセージ
ActionController::UrlGenerationError in StaticPages#top Showing /home/ec2-user/environment/kintai_A/app/views/layouts/_header.html.erb where line #10 raised: No route matches {:action=>"show", :controller=>"bases", :id=>nil, :user_id=>"1"}, missing required keys: [:id] Extracted source (around line #10): <li><%= link_to "test", user_basis_path(current_user, @base) %></li>
該当のソースコード
ruby
1# 親クラス 2class User < ApplicationRecord 3 has_many :attendances, dependent: :destroy 4 has_many :bases, dependent: :destroy 5 6# 子クラス 7class Base < ApplicationRecord 8 belongs_to :user 9end 10 11 12class Attendance < ApplicationRecord 13 belongs_to :user 14 15 16 17コントローラー 18class BasesController < ApplicationController 19 20 def show 21 @base = Base.find(params[:id]) 22 end 23 24 25ルーティング 26user_basis GET /users/:user_id/bases/:id(.:format) bases#show
試したこと
エラー箇所
<li><%= link_to "test", user_basis_path(current_user, @base) %></li> _ ⬇︎ _ @baseを1に変えたらshowページが表示されますdef show
@base = Base.find(params[:id])
end
コントローラでidが取得出来ていないみたいです。
補足情報(FW/ツールのバージョンなど)
モデルの関連付に関しては(1対多)や(多対多)の関係性があるのは知っているのですが、私のイメージとしてはこのような形にしたいです。
_ Attendance(子クラス)
_ ↗️ .userに紐づいたAttendanceのレコード
_ User(親クラス)⇨⇨⇨ user_idで紐づける
_ ↘︎
_ Base(子クラス)
_ .userに紐づいたBaseのレコード
_ user_idで紐づける
_
_
_
_
_ 無理ならUserモデルを間に挟んでそれぞれのIDを持たせるしか方法はないのでしょうか。。
_ (has_many throughの形)
_ Attendance --------------------- User ---------------------- Base
_ ・attendance_id
_ ・base_id
分かりにくくてすいません。汗