LoginSignup
5
5

More than 5 years have passed since last update.

ActiveRecordにCallbackクラス&Validatorクラス&Valueオブジェクトを組み込んでみる

Posted at

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オブジェクトを組み込んでみる」にはそれぞれのサンプルコードも載せておきました。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5