"Richtig" ist ein gefährliches Wort in Ruby. Es gibt normalerweise mehr als einen Weg, etwas zu tun. Wenn Sie wissen, dass Sie immer diesen Standardwert für diese Spalte in dieser Tabelle möchten, ist es am einfachsten, sie in einer DB-Migrationsdatei festzulegen:
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
Da ActiveRecord Ihre Tabellen- und Spalteneigenschaften automatisch erkennt, wird in jedem Modell, das es in einer Standard-Rails-App verwendet, derselbe Standard festgelegt.
Wenn Sie jedoch nur in bestimmten Fällen Standardwerte festlegen möchten - beispielsweise, dass es sich um ein geerbtes Modell handelt, das eine Tabelle mit anderen teilt -, können Sie dies beim Erstellen des Modellobjekts direkt in Ihrem Rails-Code tun:
class GenericPerson < Person
def initialize(attributes=nil)
attr_with_defaults = {:last_name => "Doe"}.merge(attributes)
super(attr_with_defaults)
end
end
Wenn Sie dann a GenericPerson.new()
ausführen, wird das Attribut "Doe" immer hochgespielt, es Person.new()
sei denn, Sie überschreiben es mit etwas anderem.