«Правильный» - опасное слово в Ruby. Обычно есть несколько способов сделать что-либо. Если вы знаете, что вам всегда нужно это значение по умолчанию для этого столбца в этой таблице, установить их в файле миграции БД - самый простой способ:
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
Затем, когда вы выполняете a GenericPerson.new()
, атрибут "Doe" всегда будет повышаться до, Person.new()
если вы не замените его чем-то другим.