新規投稿時に、投稿とユーザーを紐付ける
TECH::CAMPで勉強し始めて12週目。
個人アプリ開発をどんどん進めています。
自分でアプリを作り出すと、
カリキュラムで難なく実装していた機能の実装方法が
あれ?どうやるんだっけ?と、わからなくなってしまうことがあります・・
今回は、SNSで記事を投稿したときに
投稿記事と投稿者を紐付ける方法。
めちゃくちゃ基本です。基礎カリキュラムでやるやつです。
まず、投稿するアクションへの記述。
controller/posts_controller.rb
def new
@post = Post.new
end
def create
Post.create(post_params)
end
createアクションで(post_params)を引数としているので、
post_paramsメソッドをストロングパラメーター内に記載します。
private
def post_params
params.require(:post).permit(:product, :shop, :brand).merge(user_id: current_user.id)
end
postモデルに登録できるのは、product、shop、brandだけだよ!と指定しております。
その後ろに
.merge(user_id: current_user.id)
と記載してやることで、postsテーブルのuser_idカラムに、投稿したユーザー(投稿時のcurrent_user)のidが入ってくれるということです。
これで紐付け完了。
ちなみに投稿フォームのビューはこんな感じ(一部)
views/posts/new.html.erb
<%= form_for @post do |f| %>
<h3>
Create New Coffee Data!
</h3>
<%= f.text_field :product, placeholder: "商品名" %>
<%= f.text_field :shop, placeholder: "購入店舗" %>
<%= f.text_field :brand, placeholder: "豆の銘柄" %>
<%= f.submit "SEND" %>
<% end %>
よく使う機能だけどなんか忘れがちなので、
書き留めました!