Sometimes it is helpful to have default values for an attribute. You have two options when it comes to this
Option 1: Default value contraint in database:
class AddPublished < ActiveRecord::Migration
def change
change_column :posts, :description, :string, default: "My default value"
end
end
Option 2: after_initialize callback:
class Post < ActiveRecord::Base
after_initialize :set_defaults
def set_defaults
self.description = "My Default Value" if self.new_record?
end
end
I added the if self.new_record? portion because after_initialize runs when building a new record or after fetching a record. I only want the value to be set on newly built records.
I think that Option 2 is more flexible but Option 1 has its perks too
Related External Links: