オリジナルアプリ作成記 3 ~マイグレーションの追加、記事投稿機能の実装、エラーメッセージの表示~
マイグレーションファイルとテーブルにカラムを追加(references)
まずは、依頼投稿機能(記事投稿)のテーブルに投稿したユーザーのuser_idを追加できるようにマイグレーションファイルを追加した。
$ rails g migration AddUserIdToRequests
できたファイルに以下のように追記
def change
add_reference :requests, :user, foreign_key: true
end
ここでforeign_key: trueのように外部キー制約を行うのを忘れずに。
あとはrails db:migrateでおしまい!
アソシエーション & ストロングパラメーター
次に投稿してみてuser_idがログインしているユーザーで記録されるように実装。
requestモデルとuserモデルの間でアソシエーションを組むことからスタート。
requestモデル => belongs_to :user
userモデル => has_many :requests
ここでrequestsコントローラーのストロングパラメーターに注意する。
注意点は、外部キーを統合させる必要がある点。
merge(user_id: current_user.id)でログイン & 記事投稿したユーザーのidも統合されて記録されるようになる。
current_userはdeviseを導入していることで使えるようになる。
これで記事投稿してみると、requestテーブルに無事記録され、user_idもログインしているユーザーのidが記録されていた。
redirect_to & render
続いて、記事投稿に成功するとTopページへ失敗すると再度記事投稿ページへ戻される機能を実装。
早い話こんな感じ。
特に考察することもなく、テンプレート的な記述。
問題は、renderでエラーメッセージをいかにして表示するか。
レイアウト崩れをどう直すかという点。
明日改めてまとめたいと思う。
今日はおしまい!
ここまで順調に進んでいる気がする!