ご回答いただけるとありがたいです。よろしくお願いします!
前提・実現したいこと
グループを作成したユーザーがそのグループの管理者になる。
※そのグループを作ったユーザーが誰かわかるようにしたい。
ユーザーはdeviseを使用している。
発生している問題
現在のテーブル・モデルからでは、どのユーザーがどのグループを作ったかわからない。
該当のソースコード
migration
1#groups 2class CreateGroups < ActiveRecord::Migration[6.0] 3 def change 4 create_table :groups do |t| 5 t.string :name, null: false, unique: true 6 t.string :content 7 t.timestamps 8 end 9 end 10end 11 12#group_users 13class CreateGroupUsers < ActiveRecord::Migration[6.0] 14 def change 15 create_table :group_users do |t| 16 t.references :group, foreign_key: true 17 t.references :user, foreign_key: true 18 t.timestamps 19 end 20 end 21end
model
1#group 2class Group < ApplicationRecord 3 has_many :group_users 4 has_many :users, through: :group_users 5 has_many :tweets 6 7 validates :name, presence: true, uniqueness: true 8end 9 10#user 11class User < ApplicationRecord 12 devise :database_authenticatable, :registerable, 13 :recoverable, :rememberable, :validatable 14 15 validates :nickname, presence: true 16 17 has_many :group_users 18 has_many :groups, through: :group_users 19 has_many :tweets 20 has_many :groups 21end
controller
1#group 2class GroupsController < ApplicationController 3 before_action :authenticate_user!, only: :new 4 5 def index 6 end 7 8 def new 9 @group = Group.new 10 @group.users << current_user 11 end 12 13 def create 14 @group = current_user.groups.new(group_params) 15 if current_user.save 16 redirect_to group_tweets_path(@group) 17 else 18 render :new 19 end 20 end 21(省略) 22end
###試したこと
rails db:rollbackでマイグレーションファイルの編集できるようにしてから、groupsテーブルを以下のように変更。
migrate
1#groups 2class CreateGroups < ActiveRecord::Migration[6.0] 3 def change 4 create_table :groups do |t| 5 t.string :name, null: false, unique: true 6 t.string :content 7 t.references :user #この行を追加 8 t.timestamps 9 end 10 end 11end
アソシエーションを変更
model
1#group 2class Group < ApplicationRecord 3 has_many :group_users 4 has_many :users, through: :group_users 5 has_many :tweets 6 belongs_to :user #この行を追加 7 8 validates :name, presence: true, uniqueness: true 9end
上記の2つを変更したら、新規グループを作成できませんでした。ちなみに、変更前は新規グループ作成可。中間テーブルを使っているので、無理矢理アソシエーションを組んだことが原因だと考えています。
以上になります。ご助言いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/27 03:48
2020/11/27 03:51
2020/11/27 05:40
2020/11/27 05:52
2020/11/27 06:59