事象
Railsアプリケーション開発において、特定のカラム(ここでは便宜上「属性X」と呼びます)が初めは任意入力だったものの、ビジネスルールの変更により必須入力とする必要が出てくる状況は珍しくありません。この記事では、そのような要件変更を効率的に実装する方法について説明します。
実装
新規レコードの作成時にのみ「属性X」の入力を必須とするバリデーションを追加します。これは、on: :create
オプションを使用して、バリデーションを新規作成時に限定することで実現します。
model.rb
class ExampleModel < ApplicationRecord
validates :attribute_x, presence: true, on: :create
end
このコードにより、新規レコードの作成時にのみ「属性X」の入力が必須となります。既存のレコードに対する更新操作では、このバリデーションは適用されません。
まとめ
この記事では、Railsで特定のカラムを途中から必須に変更する際のバリデーションの実装方法を紹介しました。この方法を用いることで、アプリケーションの要件変更に柔軟に対応し、データの整合性を保ちながら新しいビジネスルールを効率的に実装することができます。
自らの備忘録のために投稿してますが、なにかお役に立てましたら幸いです!
また、なにか間違ってましたらご指摘いただけますと幸いです!