activerecord - Rails check if field value is the default value for that field -
i have field named number
on address
model, has default of 0
set @ database level. if address.new.number
, 0
back.
now, want trigger before_create
callback if number != <default value>
. so, have before_create :callback, unless: <condition>
. how can check using rails "logic"? know can compare 0
, i'd rather compare dynamical value, retrieved rails.
default values accessible in address.column_defaults
hash of {"column" => default}
:
address.column_defaults #=> {"number" => 0, "street" => nil, ...}
you can use <attribute>_changed?
methods rails provides. false
unless initialize object non-default value.
address.new.number_changed? #=> false address.new(number: 1).number_changed? #=> true
so before_create
can like:
before_create :callback, if: :number_changed?
Comments
Post a Comment