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

Popular posts from this blog

ruby - Trying to change last to "x"s to 23 -

jquery - Clone last and append item to closest class -

c - Unrecognised emulation mode: elf_i386 on MinGW32 -