SORU
16 EKİM 2009, Cuma


Nasıl geçiş komut dosyası içinde bir datetime sütun için varsayılan değer ayarlamak için?

Tablo oluşturma komut dosyası aşağıdaki düşünün:

create_table :foo do |t|
  t.datetime :starts_at, :null => false
end

Olası geçerli saati olarak varsayılan değeri var mı?

SQL sütun tanımları aşağıda verilen raylar DB bağımsız bir eşdeğer bulmak için çalışıyorum:

Oracle Sözdizimi

start_at DATE DEFAULT SYSDATE() 

MySQL Sözdizimi

start_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP

YA

start_at DATETIME DEFAULT NOW()

CEVAP
16 EKİM 2009, Cuma


Böyle bir modelde bir işlevi ekleyebilirsiniz

  before_create :set_foo_to_now
  def set_foo_to_now
    self.foo = Time.now
  end

Bu modelde geçerli saati ayarlayın.

Ayrıca veritabanı düzeyinde varsayılan değeri ayarlamak için, gibi bir şey: geçiş bazı sql kodu yerleştirebilirsiniz

execute 'alter table foo alter column starts_at set default now()'

Böyle bir şey ayarı:

create_table :foo do |t|
  t.datetime :starts_at, :null => false, :default => Time.now
end

neden Zaman çalıştırılıyor.o zaman veritabanında tablo göç sırasında şimdi işlevi aşağıdaki gibi oluşturulur:

create table foo ( starts_at timestamp not null default '2009-01-01 00:00:00');

ama istediğin bu değil sanırım.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Awesome Toys TV

    Awesome Toys

    18 HAZİRAN 2014
  • Bigapplemagic

    Bigapplemagi

    22 EYLÜL 2011
  • cdgotx

    cdgotx

    8 Kasım 2011