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

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

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

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

1回答

2486閲覧

createアクションでidを指定する理由

renren643

総合スコア279

Ruby on Rails 5

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

0グッド

0クリップ

投稿2018/02/16 14:44

userがpostとcommentをhas_manyで持っていて、postがcommentをhas_manyで持っている状態です。

以下はcommentコントローラーのcreateアクションなのですが、ここで
@comment.user_id = current_user.idと@comment.post_id = @post.idを明記しているのは、@comment.saveする時に、commentテーブルのカラム全てが埋まっている必要があるからだと思うのですが、そういった解釈でいいでしょうか?

comment.controller

1before_action :authenticate_user! 2def create 3 @post = Post.find(params[:post_id]) 4 @comment = Comment.create(params[:comment].permit(:content)) 5 @comment.user_id = current_user.id ←これ 6 @comment.post_id = @post.id  ←これ 7 8 if @comment.save 9 redirect_to post_path(@post) 10 else 11 render "new" 12end

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

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

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

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

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

guest

回答1

0

DBの設計次第です
例えば、DBのcommentテーブルに user_id カラムが無かった場合は必要ないでしょう

でもそれだとcommentがどのユーザがしたのか分からないです
post_idに関しても同じことです
一体どのpost(記事)に対してのコメントなのか分からなくなってしまいます

逆にカラムがあっても null: true が指定されていた場合は必要ないですね
これはnullもありうるということをDBレベルで許可していることになります

つまり

commentテーブルのカラム全てが埋まっている必要があるから

ではなくて、DBの設定によって必要でも不必要でもなる
ただ、コメントという性質上「何かのトピックに対してコメントする必要があり、匿名性サイトじゃない限り誰がコメントしたのか、ということは分かる必要がある」のであれば、必要になります

投稿2018/02/16 15:11

orange-lion

総合スコア426

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

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

renren643

2018/02/17 00:16

DBにuser_id もpost_idもありますね。nullも許可していません。そういうことだったのですね。回答ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問