添加对与 id 不同的选定列的引用

Add references to a chosen column different from id

是否可以添加对与 id 列不同的列的引用?

通常当创建两个模型(Model1 和 Model2)之间的关系时,使用 model1:referencesmodel2:references 来创建关系模型会自动添加一个 model1_idmodel2_id 列(连同索引和外键引用)用于 model1/model2 关联:

rails generate Relationship model1:references model2:references

例如 Model1 = TeacherModel2 = Pupil
假设 Model2 的记录(pupils' records)不时被一个 rake 任务更新:它的属性值(例如 nameschool_credits)会改变,保留 idranking(1 到 100)。

将老师与 pupil_id 联系起来没有多大意义。
每个老师都应该与 his/her 个学生的名字相关联,使用属性 pupil.name 而不是 pupil.id.

作为外键引用

这可能吗?
我可以向命令 rails generate Relationship 添加什么选项,或者我应该添加什么 reference 才能得到这个结果?

是的,你可以。检查以下 link 中关于 foreign_key 和 primary_key 的部分。我不使用生成器,所以我无法评论将哪些选项传递给生成器,但您只需要确保要用作外键的列存在于您的 table 中并且您分配适当的 foreign_key 在模型文件中。

但是你为什么需要它?我不明白你可能有什么样的用例需要你保持 id 和排名相同。