Rails 3:“带有唯一索引列的模型”的含义是什么

时间:2011-07-30 02:01:34

标签: ruby-on-rails ruby-on-rails-3 model

“具有唯一索引列的模型”

这是否仅意味着模型和列在列上具有唯一的验证?或者是否意味着该列在迁移中需要add_index?

你能解释一下创建add_index的确切含义吗?例如,如果您有一个Authors模型,带有一个名称列。为'name'添加索引可以实现什么?

感谢。

1 个答案:

答案 0 :(得分:0)

我认为该模型有一个保证唯一的列,并且有一个索引。我认为你正在阅读Rails中的模型。

唯一列意味着没有两个模型(例如User1和User2)可以为该列具有相同的值。例如,用户将拥有唯一的登录名。不应存在​​具有相同登录名(或用户名或电子邮件)的两个用户。但是Rails会自动为模型提供一个始终唯一的ID列。除非你改变它,否则第一条记录将具有ID 1,然后是2,然后是3,等等。

列上的索引意味着更容易找到该列。想想一本百科全书。那里有太多的信息,但附录(如索引)可以帮助您快速找到您要查找的内容。可能有一个关键术语的附录,然后它会告诉你在哪里快速找到它。这就是列上的索引。

默认情况下,Rails中的“具有唯一索引列的模型”是ID列:它是唯一的,它会自动获取索引以更快地查找记录。

额外:当您使用外键创建模型时(例如:模型用户可能有gender_id,并且您可能有一个名为Gender的表定义男性和女性,而gender_id对应于Gender对象),那么您应该为该外键添加一个索引,以便更快地对其进行搜索。

更多信息:http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_index