5

मेरे पास निम्नलिखित दो मॉडल हैं: स्कूल और उपयोगकर्ता, और एक मेजबान तालिका के साथ उनके बीच एक एचएबीटीएम संबंध।मैं अपने फिक्स्चर में एचएबीटीएम-विदेशी-विदेशी संबंधों को कैसे लोड कर सकता हूं?

इस तालिका में शामिल होने के बाद, उपयोगकर्ता तालिका को संदर्भित करने वाली विदेशी कुंजी को user_id नहीं कहा जाता है लेकिन student_id

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 

मैं अपने उपयोगकर्ता और स्कूलों जुड़नार में एक स्कूल और एक उपयोगकर्ता है, लेकिन foreign_key उपयोगकर्ता में परिभाषित बनाना चाहेंगे एक समस्या हो रहा है।

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)

क्या मैं गलत कर रहा हूँ:

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

ऊपर जुड़नार लोड हो रहा है एक ActiveRecord अपवाद देता है?

उत्तर

15

मुझे अभी यह पता चला है: मुझे association_foreign_key habtm परिभाषा में अनुपलब्ध था।

इसे परिभाषित करने के लिए सही तरीका है:

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 
संबंधित मुद्दे

 संबंधित मुद्दे