如何在我的灯具中加载HABTM与外键关系?

我有以下两个模型:School和User,以及它们之间的HABTM关系,带有连接表。

在此连接表中,引用User表的外键不是user_id而是student_id

 class School  "User", :join_table => "schools_students", :foreign_key => "student_id" end class User  "School", :join_table => "schools_students", :foreign_key => "school_id" end 

我想在我的用户和学校设备中创建一个学校和一个用户,但在User中定义的foreign_key似乎是个问题。

fixtures/users.yml

 user1: name: Student studying_schools: school1 

fixtures/schools.yml

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

加载上面的灯具会返回一个ActiveRecordexception: ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'user_id' in 'field list': INSERT INTO schools_students (student_id, user_id) VALUES (6562055, 14302562)

我究竟做错了什么 ?

我刚刚发现它:我在habtm定义中缺少association_foreign_key

正确的定义方法是:

 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