モデルの作成
テーブルを設計する
今回作成するアプリケーションに必要なテーブルの設計をする。
今回必要なテーブルとしては、
ユーザーの情報を登録するUsersテーブル。
本の情報を登録するBooksテーブルの2つのテーブルが必要となる。
まずはUsersテーブルについて設計する。
カラム名 | データ型 | カラムの説明 |
---|---|---|
id | integer | userを識別するID |
name | string | userの名前 |
introduction | text | userの自己紹介 |
次に、Booksテーブルの設計をする。
カラム名 | データ型 | カラムの説明 |
---|---|---|
id | integer | bookを識別するID |
title | string | bookのタイトル |
body | text | bookの説明 |
user_id | integer | bookを投稿したユーザーID |
モデル・テーブルの作成
Userモデル・usersテーブル
上記で設計したモデル・テーブルを作成・編集していく。
まずは、Userモデルについて、
Userモデルはdeviseの導入の際に、作成が完了しているが、
introductionカラムが足りないため、追加を行う。
カラムの追加は下記のコマンドを実行する。
($ rails generate migration Addカラム名Toテーブル名 カラム名:データ型) $ rails g migration AddIntroductionToUsers introduction:text
上記を実行すると、下記のようなマイグレーションファイルが作成される。
ファイルの記述が問題ないことを確認し、migrateする。
$ rails db:migrate
Bookモデル・booksテーブル
次にBookモデルの作成を行う。
モデルを作成するコマンドは以下となる。
($ rails g model モデル名) $ rails g model Book
上記を実行すると下記のようなファイルが生成される。
Running via Spring preloader in process 4458 invoke active_record create db/migrate/20230722132211_create_books.rb create app/models/book.rb invoke test_unit create test/models/book_test.rb create test/fixtures/books.yml
作成されたマイグレーションファイルにカラムを追加していく。
class CreateBooks < ActiveRecord::Migration[6.1] def change create_table :books do |t| t.string :title #追加 t.text :body #追加 t.integer :user_id #追加 t.timestamps end end end
上記のようにマイグレーションファイルに記述し、migrateする。
$ rails db:migrate
db/schema.rbに今回追加したテーブルカラムが記述されていることを確認する。
アソシエーションの記述
User モデルに対して、Book モデルが 1:N になるよう関連付けます。下記の記述をモデルに追記する。
models/user.rb
has_many :books, dependent: :destroy
models/book.rb
belongs_to :user
以上。
アプリケーションの作成 参考URL 作成するアプリケーションについて - takifugu’s blog