"Правильно" - небезпечне слово в Рубі. Зазвичай існує більше ніж один спосіб зробити що-небудь. Якщо ви знаєте, що ви завжди хочете, що це значення за замовчуванням для цього стовпця в цій таблиці, встановлення їх у файлі міграції БД є найпростішим способом:
class SetDefault < ActiveRecord::Migration
def self.up
change_column :people, :last_name, :type, :default => "Doe"
end
def self.down
# You can't currently remove default values in Rails
raise ActiveRecord::IrreversibleMigration, "Can't remove the default"
end
end
Оскільки ActiveRecord автоматично розкриває властивості таблиці та стовпців, це призведе до встановлення того ж за замовчуванням у будь-якій моделі, використовуючи його в будь-якому стандартному додатку Rails.
Однак якщо ви хочете, щоб значення за замовчуванням були встановлені лише в конкретних випадках - скажімо, це успадкована модель, яка розділяє таблицю з деякими іншими - тоді ще один елегантний спосіб - це зробити це безпосередньо у вашому коді Rails, коли створюється об'єкт моделі:
class GenericPerson < Person
def initialize(attributes=nil)
attr_with_defaults = {:last_name => "Doe"}.merge(attributes)
super(attr_with_defaults)
end
end
Тоді, коли ви робите це GenericPerson.new()
, він завжди буде обробляти атрибут "Doe", Person.new()
якщо ви не перекриєте його чимось іншим.