チャットアプリを作ってますが、グループを作成した時にユーザー情報を追加したいです
これでユーザー情報を追加できるのはわかるのですが
Group.create(name: group_params[:name], user_id: current_user.id)
元の記述は以下です
def create @group = Group.new(group_params) if @group.save redirect_to root_path, notice: 'グループを作成しました' else render :new end end
元の記述にユーザー情報を追加したいのですが、これだとグループテーブルのuser-idがNULLになってしまいます
Group.create(name: group_params[:name], user_id: current_user.id)をそのまま追加記述すると、当然グループが二重に保存されます(片方はuser-idが入ります)
user-idは後から追加したカラムです
宜しくお願いします
追記 コントローラー全体
class GroupsController < ApplicationController before_action :set_group, only: [:edit, :update,:destroy] def index end def new @group = Group.new @group.users << current_user end def create @group = Group.new(group_params,) Group.create(name: group_params[:name], user_id: current_user.id) if @group.save redirect_to root_path, notice: 'グループを作成しました' else render :new end end def destroy group = Group.find(params[:id]) if group.user_id == current_user.id group.destroy end end def update if @group.update(group_params) redirect_to group_messages_path(@group), notice: 'グループを編集しました' else render :edit end end private def group_params params.require(:group).permit(:name, { :user_ids => [] }) end def set_group @group = Group.find(params[:id]) end end
DB設計
messagesテーブル |Column|Type|Options| |------|----|-------| |body|text|null: false, foreign_key: true| |image|string|null: false, foreign_key: true| |group_id|integer|null: false, foreign_key: true| |user_id|integer|null: false, foreign_key: true| ### Association - belongs_to :group - belongs_to :user ## usersテーブル |Column|Type|Options| |------|----|-------| |email|string|null: false| |password|string|null: false| |nickname|string|null: false| ### Association - has_many :messages - has_many :group ## groupテーブル |Column|Type|Options| |------|----|-------| |body|text|null: false, foreign_key: true| |image|string|null: false, foreign_key: true| |group_id|integer|null: false, foreign_key: true| |user_id|integer|null: false, foreign_key: true| ### Association - has_many :messages - has_many :user
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/14 01:59