中間テーブルにデータが保存できません
大会テーブル 学校テーブルがあります
1つの大会に複数の学校が参加しており、学校は複数の大会に参加している関係となっています
よろしくお願いいたします
大会モデル
class Tournament < ApplicationRecord has_many :tournament_schools has_many :schools, through: :tournament_schools end
大会 マイグレーション
class CreateTournaments < ActiveRecord::Migration[5.2] def change create_table :tournaments do |t| t.string :name t.timestamps end end end
学校テーブル
class School < ApplicationRecord has_many :tournament_schools has_many :tournaments, through: :tournament_schools end
学校 マイグレーション
class CreateSchools < ActiveRecord::Migration[5.2] def change create_table :schools do |t| t.string :name t.integer :tournament_id,foreign_key: true t.timestamps end end end
中間テーブル
class TournamentSchool < ApplicationRecord belongs_to :school belongs_to :tournament end
class CreateTournamentSchools < ActiveRecord::Migration[5.2] def change create_table :tournament_schools do |t| t.references :school, foreign_key: true t.references :tournament, foreign_key: true t.timestamps end end end
学校を登録すれば、中間テーブルに保存されるという認識でいるのですが、違いますでしょうか?
保存
schools_controller.rb
class SchoolsController < ApplicationController def new @school = School.new end def create @school = School.create(name_params) if @school.save redirect_to action: :new else render "new" end end def show @tweets = Tweet.where(tournament_id: params[:id]).includes(:user).page(params[:page]).per(5).order("created_at DESC") end private def name_params params.require(:school).permit(:name,:tournament_id) end end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。