質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1456閲覧

rails グループの編集、消去機能を作ったユーザーに制限

yamadaippei

総合スコア12

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/04/06 12:50

現在個人アプリでチャットアプリの作成をしています。

今解決したいこととして、グループの消去、編集機能をグルーピを作成したユーザーのみに制限したいです。

今の現状、編集・消去が全てのユーザーができる状態になっています。
groupsコントローラー
def index
@groups = Group.all
end

def new
@group = Group.new
@group.users << current_user
end

def create
# binding.pry
@group = Group.new(group_params)
if @group.save
redirect_to groups_path
else
render :new
end
end

def edit
@group = Group.find(params[:id])
end

def update
@group = Group.find(params[:id])
if @group.update(group_params)
redirect_to groups_path
else
render :edit
end
end

def destroy
group = Group.find(params[:id])
group.destroy
redirect_to groups_path
end

private
def group_params
params.require(:group).permit(:name, user_ids: [])
end

end

ビュー
.group-main
.group-list
- @groups.each do |group|
.group
= link_to group_messages_path(group), class:"group-link-path"do
%h3.name
= group.name
.group__message
= group.show_last_message

- if user_signed_in? .edit-delete-content = link_to "編集", edit_group_path(group.id), class: "edit-group-info" = link_to "グループの削除", group_path(group.id), method: :delete, class: "delete-group-Btn"

メッセージの消去を同じ感じの制限にする際、メッセージにはuser.idカラムがあるので
if user_signed_in? && current_user.id == message.user_id
でできましたが、グループは中間テーブルを挟んでいて、user.idカラムがないので、
この書き方ではできませんでした。

アドバイスをお願いします。。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

グループとユーザーのアソシエーションを変更し
groupテーブルにuser.idを加えることで解決しました。

投稿2020/04/08 15:49

yamadaippei

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問