ユーザーの情報をログインユーザーにする書き方
状況:
ログインしているユーザーにて、日報(report)を作成しようとするとき。
日報を新規作成時のControllerの記述について、書き方のメモ。
User と Report は1 : Nの関係性。
コード:
app/controllers/reports_controller.rb
①これと、
def create @report = Report.new(report_params) @report.user = current_user
②これは
def create @report = current_user.reports.new(report_params)
同じことを行っている。
②のreportsとは、
app/models/user.rb
class User < ApplicationRecord devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable has_many :reports, dependent: :destroy
ちなみにhas_manyなので、reportsと複数形で書くこと。
current_userからそのまま、reportsメソッドが使用できて、newすることができちゃう。
Report.new(report_params) → reports.new(report_params)※current_userに紐付けられる。