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