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

  • TitaniumBackup

    TitaniumBack

    10 EYLÜL 2011
  • vgeller1

    vgeller1

    22 Kasım 2009
  • Video-Tutorials.Net

    Video-Tutori

    15 Mart 2011