Ruby'de "Doğru" tehlikeli bir kelimedir. Bir şeyi yapmanın genellikle birden fazla yolu vardır. Bu tablodaki o sütun için her zaman varsayılan değeri isteyeceğinizi biliyorsanız , bunları bir DB geçiş dosyasında ayarlamak en kolay yoldur:
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 tablo ve sütun özelliklerinizi otomatik olarak keşfettiğinden, bu, herhangi bir standart Rails uygulamasında onu kullanan herhangi bir modelde aynı varsayılanın ayarlanmasına neden olur.
Ancak, yalnızca belirli durumlarda varsayılan değerlerin ayarlanmasını istiyorsanız - örneğin, bu, bir tabloyu başkalarıyla paylaşan miras alınan bir modeldir - o zaman başka bir zarif yol, model nesnesi oluşturulduğunda bunu doğrudan Rails kodunuzda yapmaktır:
class GenericPerson < Person
def initialize(attributes=nil)
attr_with_defaults = {:last_name => "Doe"}.merge(attributes)
super(attr_with_defaults)
end
end
Sonra, bir yaptığınızda GenericPerson.new()
, Person.new()
siz onu başka bir şeyle geçersiz kılmadığınız sürece "Doe" özniteliğini her zaman damlatır .