将外键放在rails模型belongs_to association中

1 database ruby-on-rails associations

我是rails框架的初学者.我有一个基本问题.

我试图定义一些模型及其关联,参考流行的rails指南.我的协会如下所示.

class Person < ActiveRecord::Base
  has_one :head
end

class Head < ActiveRecord::Base
  belongs_to :person
end
Run Code Online (Sandbox Code Playgroud)

在这里,我需要在表'head'中添加foreign_key(Persons的主键).

现在,如果我需要获得'人'的'头',rails需要扫描头表并匹配person_id.

我认为直接的方法是在'person'表中添加外键.然后我可以用'ID'直接引用'人'的'头'.

似乎rails约定对性能不友好.我在这里错过了什么吗?

Bal*_*ick 5

创建迁移以添加包含外键的列时,强烈建议在此列上添加索引.通过这种方式,数据库将有效地从中找到Head person_id(然后通过它进行有效搜索id).

add_index :heads, :person_id
Run Code Online (Sandbox Code Playgroud)

如果它是一对一的关联,你甚至可以添加unique选项(除非你的应用程序接受联合双胞胎:-)):

add_index :heads, :person_id, :unique => true
Run Code Online (Sandbox Code Playgroud)

我建议你看看这篇关于在哪里使用索引的文章: