0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ユーザのプロフィールページ①

Posted at

ユーザのプロフィールページを作成

前回は、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に従属している

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?