Callbackクラス・Validatorクラス・ValueオブジェクトをActiveRecordに組み込んでみました。
ActiveRecordモデルのコードはこんな感じです。
# app/models/blog/site.rb
class Blog::Site < ActiveRecord::Base
validates :title, presence: true
validates :description, presence: true
validates_with Blog::SiteDescriptionSignificanceValidator
before_save Blog::SiteLanguageEstimator.new(:language)
def rating
@rating ||= Blog::SiteRating.from_description(description)
end
end
ここでは
- カスタムValidatorで
description
の内容をチェックする -
before_save
でCallbackクラスを使ってlanguage
を設定する - Valueオブジェクトで
rating
を扱う
ということを行っています。
各クラスの中身はたいしたことしてないので省略しますが、いちおう元記事の「Rails4.1.7のActiveRecordにCallbackクラス&Validatorクラス&Valueオブジェクトを組み込んでみる」にはそれぞれのサンプルコードも載せておきました。