[Rails]store_accessor
Railsにはストアアクセサ機能があり、 store_accessor を定義するとActiveRecordのattributeと同じようにストアの属性を変更できるようになる
https://api.rubyonrails.org/classes/ActiveRecord/Store.html
コードは以下の記事から引用 https://techracho.bpsinc.jp/hachi8833/2021_07_19/74562
class Account < ApplicationRecord
store_accessor :settings, :color
end
acc = Account.new
acc.color_changed? #=> false
acc.color = "red-n-white"
acc.color_changed? #=> true
バリデーションも可能
class RangeQuestion < ActiveRecord::Base
after_commit :recalculate_answers_scores, on: :update, if: :answer_was_changed?
# RangeQuestionでは`min`値と`max`値に収まる正しい回答を期待する
store_accessor :options, :min, :max
# なおストアアクセサは通常の属性と同じ方法でバリデーションできる
validates :min, :max, presence: true, numericality: { only_integer: true }
end