5

Rails 5'deyim ve User modeline sahibim.Özel ad ve yabancı anahtarla başvuru

author adıyla User modeline başvuran Book modelini oluşturmak istiyorum. Göçmenlere yabancı anahtarları yerleştirmek istiyorum.

Bir yanıt ararken, yalnızca yeni bir tablo oluşturmayla değil, bir geçişte sütunlarının nasıl ekleneceğini buldum. Aşağıdakiler create_table :books için nasıl görünür? senin raylar ise

add_reference :books, :author, references: :users, index: true 
add_foreign_key :books, :users, column: :author_id 
+1

İpuçları: Bağımlılığı unutmayın: imha veya geçersiz kıl ve bu sütuna bir dizin ekleyin. (Cevabımı düzenledim) –

cevap

4

: tamsayı Kullanıcı modelinde Sonra

:

has_many :books, foreign_key: :author_id, class_name: "Book", dependent: :nullify 

Ben bağımlı kullanın:: geçersiz Bir kaydı sildiğinizde hatalardan kaçınmak için, ancak bağımlı olarak kullanabilirsiniz: kullanıcıyı yok ettiğinizde kitapları yok edin.

Ve Kitap modeli:

belongs_to :user, foreign_key: :author_id, class_name: 'User' 

Bu sütun üzerinde dizin eklemek gerekir.

-1

jeneratör beyanı: Sen AUTHOR_ID kullanabilirsiniz

rails g model Book user:references 
+0

Bu, "kullanici_kimliği" ile normal bir referans olusturacaktir, ama ben 'author_id' (ama Kullanici modeline atıfta bulunarak) istiyorum. –

+0

Daha sonra “yazarlar” modeline sahip olmak daha mantıklı olur, böylece yazar: referanslar diyebiliriz. "Someting_id" 'i gördüğümüz zaman en iyi uygulamalarla uyumlu bir şekilde tuttuğumuzda, otomatik olarak "bir şey" modeline ait olduğunu biliyoruz. Kendinizi bu prensibe göre hizalamaya çalışın. – meshpi