Friday, January 30, 2009

i can't believe it's this hard to set default values at the AR object level (not the db level)

This is what I had to do:
  
before_save :maybe_set_source

def maybe_set_source
self[:source] = source_name if !self[:source]
end

def source
self[:source] || source_name
end

# The default value I want to set
def source_name
File.basename(RAILS_ROOT)
end

Really?

1 comment:

  1. try after_initialize http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

    def after_initialize
    self[:source] ||= File.basename(RAILS_ROOT)
    end

    ReplyDelete