##環境
Ruby 3.0.2
Rails 6.1.4.1
##FormObject
バリデーションの記述はModelではなくFormObjectに切り出したほうがよいという内容の記事を見つけた。
ActiveModel::ModelをincludeしてればModel同様にバリデーションを書ける。
バリデーションpresenceはFormObjectに切り出す。
app/forms/employee_form.rb
class EmployeeForm
include ActiveModel::Model
with_options presence: true do
validates :firstname
validates :lastname
end
end
バリデーションuniquenessはDBとやり取りして判定するバリデーションのため、Modelの方に書く。
app/models/employee.rb
class Employee < ApplicationRecord
validates :number, presence: true, uniqueness: true
validates :email, presence: true, uniqueness: true
end