我正在关注一个开源应用程序作为我的应用程序的指南。一点背景,我试图在活动管理员中嵌套表单。我假设这是他们嵌套表单的一部分。
OpenSource Schema
create_table "addresses", :force => true do |t|
t.integer "addressable_id"
t.string "addressable_type"
t.string "street"
t.string "city"
t.string "state", :limit => 2
t.integer "zip"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "addresses", ["addressable_type", "addressable_id"], :name => "index_addresses_on_addressable_type_and_addressable_id"
除了底部的add_index之外,我的架构完全相同。他们是如何得到的,也许如果你有时间,为什么?提前谢谢。
答案 0 :(得分:1)
ActiveAdmin正在向数据库表添加索引,以提高数据库的性能。索引不是表中的附加行,而是一个单独的结构,允许数据库引擎更快地查找内容。这里有一篇很棒的介绍性文章:
http://www.mysqlperformanceblog.com/2011/08/30/explaining-indexes-with-a-library-metaphor/
Rails迁移使用add_index语法为此数据库表创建该索引。
答案 1 :(得分:1)
我假设Addresses是多态表,这就是为什么你有addressable_id和addressable_type列。因此,每次查找对象地址时,都必须在两列中进行搜索。为了优化数据库中的搜索时间,您可以创建包含这些列的索引。