Rails

Railsで変更不可な導出カラムを設定する

More than 3 years have passed since last update.

例えば、こんなモデル

Circle:円形
 - radius: 半径
 - square: 面積 # このカラムは半径から導出したいので、直接変更できないようにしたい
class Circle < ActiveRecord::Base
  def radius=(radius)
    super
    self[:square] = radius*radius*Math::PI
  end

  def square=(square)
  end
end

ポイント

  • squareのセッターメソッドを無効化
  • radiusのセッターメソッドでsquareを計算
  • squareにアクセスするにはself[:square]を用いる