5

Aşağıdaki iki modelim var: Okul ve Kullanıcı ile bunların arasında bir HABTM ilişkisi, birleştirme tablosuyla.Donanımımda HABTM ile yabancı anahtar ilişkilerini nasıl yükleyebilirim?

Bu birleştirme tablosunda, Kullanıcı tablosuna başvuran yabancı anahtar user_id ancak student_id olarak adlandırılmaz.

class School < ActiveRecord::Base 
has_and_belongs_to_many :students, :class_name => "User", :join_table => "schools_students", :foreign_key => "student_id" 
end 

class User < ActiveRecord::Base 
has_and_belongs_to_many :studying_schools, :class_name => "School", :join_table => "schools_students", :foreign_key => "school_id" 
end 
benim Kullanıcılar ve Okullar demirbaşlar bir okul ve bir kullanıcı, ancak kullanıcı tanımlı foreign_key oluşturmak istiyorum

bir sorun gibi görünüyor.

fixtures/users.yml:

user1: 
    name: Student 
    studying_schools: school1 

fixtures/schools.yml: ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'user_id' in 'field list': INSERT INTO schools_students (student_id, user_id) VALUES (6562055, 14302562)

yanlış yapıyorum: Yukarıdaki demirbaşlar yükleniyor

school1: 
    name: School 1 
    active: true 
    students: user1 

bir ActiveRecord durum döndürür?

cevap

15

Bunu yeni öğrendim: association_foreign_key habtm tanımında eksik.

tanımlamak için doğru bir şekilde:

class School < ActiveRecord::Base 
has_and_belongs_to_many :students, :class_name => "User", :join_table => "schools_students", :association_foreign_key => "student_id" 
# :foreign_key is the default school_id 
end 

class User < ActiveRecord::Base 
has_and_belongs_to_many :studying_schools, :class_name => "School", :join_table => "schools_students", :foreign_key => "student_id" 
# :association_foreign_key is the default school_id 
end