モデルの作成、バリデーションの設定
class CreateCompanies < ActiveRecord::Migration[7.1] def change create_table :companies do |t| t.text :name, null: false t.date :founding_date t.timestamps end end end
class Company < ApplicationRecord validates :name, presence: true end
上の例では、Companyモデルをname(文字列)、founding_date(日付)フィールドで作成し、nameフィールドでは空白時にバリデーションを行っている例となっています。
コマンドプロンプトでプロジェクトのルートディレクトリに移動し、
と入力するとdb/migrate内にマイグレーション用のファイル、app/modelsフォルダにモデル名のファイルが作成されます。
db/migrate内にできたファイルでは、モデルのフィールドを定義しています。
の形式でフィールドを定義することができ、null: falseを追加すると必須フィールドになります。
app/models/モデル名のファイルでは紐づいたモデルとのリレーションの設定、バリデーションなどを記入することができます。
リレーションについては次のページで説明していきます。
のようにするとデータがないときに対するバリデーションを行うことができます。
空白ではなく、正規表現でバリデーションを行いたいときは、presence: trueの部分を
のようにします。(上はここでは関係ないですが郵便番号の3桁数字-4桁数字になるようにしたバリデーション)
また,区切りで複数のバリデーションも行うことが可能となっています。
それぞれの定義が完了したら、プロジェクトのルートディレクトリで
と入力することでモデルが作成されます。
また、マイグレーションは以前の状態に戻すことができ、すべてのマイグレーションをリセットするときは
と入力してください。
既定の回数分だけ戻したいときは
の形式で記入してください。
直近のマイグレーションのみ取り消すときは
となります。
コマンドプロンプトでプロジェクトのルートディレクトリに移動し、
rails generate model モデル名
と入力するとdb/migrate内にマイグレーション用のファイル、app/modelsフォルダにモデル名のファイルが作成されます。
db/migrate内にできたファイルでは、モデルのフィールドを定義しています。
t.フィールドの型 :フィールド名
の形式でフィールドを定義することができ、null: falseを追加すると必須フィールドになります。
app/models/モデル名のファイルでは紐づいたモデルとのリレーションの設定、バリデーションなどを記入することができます。
リレーションについては次のページで説明していきます。
validates :フィールド名, presence: true
のようにするとデータがないときに対するバリデーションを行うことができます。
空白ではなく、正規表現でバリデーションを行いたいときは、presence: trueの部分を
format: { with: /\A\d{3}-\d{4}\z/, message: "郵便番号を正しい形式で入力してください" }
のようにします。(上はここでは関係ないですが郵便番号の3桁数字-4桁数字になるようにしたバリデーション)
また,区切りで複数のバリデーションも行うことが可能となっています。
それぞれの定義が完了したら、プロジェクトのルートディレクトリで
rails db:migrate
と入力することでモデルが作成されます。
また、マイグレーションは以前の状態に戻すことができ、すべてのマイグレーションをリセットするときは
rails db:migrate:reset
と入力してください。
既定の回数分だけ戻したいときは
rails db:rollback STEP=既定の回数
の形式で記入してください。
直近のマイグレーションのみ取り消すときは
rails db:rollback STEP=1
となります。