SORU
2 NİSAN 2014, ÇARŞAMBA


Raylar referans sütun bir geçiş eklemek 4

Bir kullanıcı çok yüklenenler var. Başvuran uploads tabloya bir sütun user eklemek istiyorum. Geçiş nasıl olmalıdır?

Ne var burada. Eğer (1) :user_id, :int kullanmalıyım emin değilim ya (2) :user, :references. (2) çalıştığından emin değilim. Sadece "yol. raylar bunu yapmak için çalışıyorum

class AddUserToUploads < ActiveRecord::Migration
  def change
    add_column :uploads, :user_id, :integer
  end
end

İlgili soru hariç Raylar 3. Rails 3 migrations: Adding reference column?

CEVAP
2 NİSAN 2014, ÇARŞAMBA


Raylar 4.x

Sen ne zamanzaten varusers uploads tablo ve diliyorumyeni ilişki Eklearalarında.

Tüm yapmanız gereken, sadece bir geçiş aşağıdaki komutu kullanarak oluşturun

rails g migration AddUserToUploads user:references

bir göç dosyası: yaratacaktır

class AddUserToUploads < ActiveRecord::Migration
  def change
    add_reference :uploads, :user, index: true
  end
end

Çalıştırın göç rake db:migratekullanarak. Bu geçiş bakacak ekleyerek yeni bir sütun adında user_id uploads tablo (başvuru id sütun users tablo) ARTI olacak aynı zamanda eklemek bir dizin üzerinde yeni bir sütun.

GÜNCELLEME [Rails 4.2]

Raylar tutarlılığı korumak için güvenilir olamazilişkisel veritabanlarıbizi kurtarmak için buraya gel. Bu ne demek, yabancı anahtar kısıtlamaları de ekleyebilirizveritabanı düzeykendisi ve emin olun bu set veritabanı tutarlılığını ihlal eden herhangi bir işlem reddetmek olur. @İnfoget yorumladıRaylar 4.2yerel destek ile birlikte geliryabancı anahtarlar(tutarlılığı). Gerekli değil ama yukarıda yarattığımız başvuru için yabancı anahtar(çok yararlı) eklemek isteyebilirsiniz.

Bir yabancı anahtarı eklemek içinmevcut referansoluşturun yabancı anahtar: eklemek için yeni bir geçiş

class AddForeignKeyToUploads < ActiveRecord::Migration
  def change
    add_foreign_key :uploads, :users
  end
end

Tamamen oluşturmak içinyabancı anahtar(Rails 4.2) ile yeni başvuruoluşturabilir ve bu komut aşağıdaki kullanarak bir geçiş

rails g migration AddUserToUploads user:references

bir göç dosyası: yaratacaktır

class AddUserToUploads < ActiveRecord::Migration
  def change
    add_reference :uploads, :user, index: true
    add_foreign_key :uploads, :users
  end
end

Bu uploads tablo user_id sütun için yeni bir yabancı anahtar ekler. Anahtar referansları users tablo id sütun.

NOT:Bu sana hala çok ihtiyacım var referans eklemenin yanı sırabir referans ilk o zaman yabancı anahtar oluşturun(aynı geçiş yabancı anahtar oluşturmak için seçebilir veya ayrı bir geçiş dosyası). Aktif Kaydı sadece tek bir sütun yabancı anahtar destekler ve sadece mysql, mysql2 postgresql adaptörleri desteklenen şu anda. sqlite3, vb gibi diğer adaptörleri ile denemeyin. Başvuru için Rails Guides: Foreign Keys bakın.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Capcom Unity

    Capcom Unity

    5 NİSAN 2010
  • Khan Academy

    Khan Academy

    17 Kasım 2006
  • spyib

    spyib

    9 Ocak 2007