新規投稿時に、投稿とユーザーを紐付ける

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 %>

 

よく使う機能だけどなんか忘れがちなので、

書き留めました!