前提・実現したいこと
<エラーが出るまでの背景>
〇event-group(多対1の関係)
とモデルを定義し、モデルファイルでアソシエーションを組み、
『eventが属するgroupとグループページのgroupが一致すれば、eventを削除できる』
(わかりづらかったらすみません)
という仕様にしたいのですがevent.group_idとしてもnillになってしまい、思うように動きません...。
<開発環境>
awsのcloud9でrubyonrailsを利用してweleveという名前のwebアプリケーションを開発しています。DBはMySQLを利用しています
発生している問題・エラーメッセージ
destroyメソッド内にbinding.pryとしてブレークポイントを設定したのちにviewで削除ボタンを押した時のターミナル
19: def destroy 20: # binding.pry 21: @group=Group.find(params[:group_id]) 22: event=Event.find(params[:id]) => 23: binding.pry 24: event.destroy if event.group_id==@group.id 25: redirect_to controller: 'groups', action: 'show' 26: end [1] pry(#<EventsController>)> @group => #<Group:0x0000000006698bc8 id: 2, name: "あああ", category: "サークル", what_to_do: "テニス", intro: "パリピ", created_at: nil, updated_at: nil> [2] pry(#<EventsController>)> @group.id => 2 [3] pry(#<EventsController>)> event => #<Event:0x000000000669d150 id: 2, title: "食事会", date: Fri, 03 Apr 2020, descrip: "タダでご飯食べれるよ", where: "おしゃんなご飯屋さん", created_at: nil, updated_at: nil, group_id: 2> [4] pry(#<EventsController>)> event.group_id => nil ↑ここがnilになる理由がわからないです... ### 該当のソースコード ```グループページ <div class="event_index"> <%= @events.each do |event| %> <!--<div class="background_image" style="background-image: url('images.jpg')">--> <h3><%= event.title %></h3> <ul> <li> <p>日時:<%= event.date %></p> </li> <li> <p>集合場所:<%= event.where %></p> </li> </ul> <%= simple_format (event.descrip) %> <% if event.group==@group %> <%= link_to "編集", edit_group_event_path(@group,event), method: :get %> <%= link_to "削除", "/groups/#{@group.id}/events/#{event.id}", method: :delete %> <% end %> <% end %> </div>
eventsコントローラのdestroyメソッド
1 def destroy 2 # binding.pry 3 @group=Group.find(params[:group_id]) 4 event=Event.find(params[:id]) 5 binding.pry 6 event.destroy if event.group==@group 7 redirect_to controller: 'groups', action: 'show' 8 end
event.rb
1class Event < ApplicationRecord 2 attr_accessor :group_id 3 has_many :applies 4 has_many :students, through: :applies 5 6 belongs_to :group 7 8end
group.rb
1class Group < ApplicationRecord 2 has_many :events 3 has_many :students 4end
group.rb
1class Group < ApplicationRecord 2 has_many :events 3 has_many :students 4end 5 6```eventsテーブルにgroup_idを外部キー制約付きで作成するためのマイグレーションファイル 7class AddGroupIdToEvents < ActiveRecord::Migration[5.2] 8 def change 9 add_reference :events, :group, foreign_key: true 10 end 11end 12 13```route.rb(関係あるかわかりませんが...) 14Rails.application.routes.draw do 15 devise_for :students 16 17 root to: 'events#index' 18 19 # resources :events 20 21 resources :students,only:[:show,:edit,:update] 22 resources :groups, only:[:show,:edit, :update] do 23 resources :events, only:[:edit, :update, :destroy] 24 end 25 26end
試したこと
〇アソシエーションの組み方が間違っていないか確認
〇eventsテーブルもgroup_idに外部キー制約をつけてみる
補足情報(FW/ツールのバージョンなど)
マイグレーションは組めているはずなのになぜevent.group_idとするのnillになるのかさっぱりわかりません...
ド素人なのでどなたかご教授していただくと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/04 14:35