ユーザのプロフィールページを作成
前回は、1対n(1対多)を投稿しました。 そこで、保存や投稿などをしました。今回は、1対1の関係
ユーザーとプロフィール
usersテーブルとprofilesテーブル
usersのidとprofilesのuser_idで紐づいている。
作成するプロフィールの内容
・ニックネーム(文字)
・自己紹介(長文)
・生年月日(日付)
・性別(数字)
・通知設定(Boolean)
まずは、モデルの作成
$rails g model Profile
db/migrate/20230308215518_create_profiles.rb
マイグレーションファイルが作成されています。
まず、ユーザーに紐づいているので、referenceの記入
t.references :user, null: false
必ずユーザーidが存在するはずなので、null: falseというオプションをつけている
ニックネームを追加
string:文字列
t.string :nickname
自己紹介
長文なので、text
t.text :introduction
性別
integer:整数
t.integer :gender
誕生日
date:日付
t.date :birthday
メールを受信するかしないか
boolean:true or folse
t.boolean :subscribed
subscribed:購読している
default: false
を後ろに追加
何も入力されていなければ、falseにしますよというオプション
これで、マイグレーション作成できたので実行していきましょう!
$rails db:migrate
create_table、migratedと表示があるので、実行できたはずです👍
db/schema.rb
を確認するとprofilesというテーブルが作成されているのが確認できました🙆
次にアクティブレコード、モデルの設定
app/models/user.rb
今回は、プロフィールは一人一つしか存在しないので
has_one :profile
とする。複数ある場合は、has_many
複数形ではないので、profile
ユーザーが削除された時にこのデータも消えて欲しいので
dependent: :destroy
を追加
app/models/profile.rb
プロフィールは、ユーザーに紐づいていると書く
belongs_to :user
プロフィールから見ると、userに従属している