İlişkilendirmeyi tanımlamak için has_and_belongs_to_many kullandığım çoktan fazla ilişkiye sahip iki tablo var.Birincil anahtar olmadan birleştirme tablosu oluşturma
class Foo < ActiveRecord::Base
...
has_and_belongs_to_many :bar
...
end
class Bar < ActiveRecord::Base
...
has_and_belongs_to_many :foo
...
end
Ben de sınıf tablo
class BarFoo < ActiveRecord::Base
...
belongs_to :foo
belongs_to :bar
...
end
Ben tırmık db çalıştırmak katılmak temsil etmek tanımladık
: tohum aşağıdaki hatayı alıyorum:
Primary key is not allowed in a has_and_belongs_to_many join table (bar_foo)
Ben veritabanını düzenlerseniz ve birincil anahtar alanını (ID) bar_foo tablosundan çıkarın ve daha sonra rake db'yi çalıştırın: tohum her şey istenen şekilde çalışır.
Yukarıdakiler göz önüne alındığında, birincil anahtarsız raylarda birleştirme tabloları oluşturmak için tercih edilen araç nedir? ve bunun tersi ama "nil için tanımsız yöntem 'klass': NilClass" gibi bir hata mesajı şey var ": aracılığıyla =>: foo: barlar Has_many"
Ben de kullanarak çalıştı.
Matt, yanıt için teşekkürler. RoR için nispeten yeniyim, bu yüzden karşılık gelen model dosyaları olmayan bir tablo yaratmanın tercih edilen yolu nedir? Bu sadece bir göç dosyası oluşturarak ve tabloyu iki öznitelik bar_id ve foo_id ile tanımlamak için create_table kullanarak yapılabilir mi? – Keith
İşte nasıl yapılacağı ile ilgili güzel bir cevap: [HABTM birleştirme tablosu için el ile geçişi mi oluşturmalıyım?] (Http://stackoverflow.com/questions/564306/do-i-need-to-manually-create -a migrasyon için-a-habtm-ol-masa) – Matt