我只是对Ruby on Rails Tutorial.org中的这段代码感到有些困惑。它的 add_index 部分到底做了什么?为什么有3行呢?

    class CreateRelationships < ActiveRecord::Migration
  def change
    create_table :relationships do |t|
      t.integer :follower_id
      t.integer :followed_id

      t.timestamps
    end

    add_index :relationships, :follower_id
    add_index :relationships, :followed_id
    add_index :relationships, [:follower_id, :followed_id], unique: true
  end
end

最佳答案



基本上使用索引来加快查询速度。

在这个例子中

add_index :relationships, :follower_id
add_index :relationships, :followed_id

follower_idfollowed_id列创建了索引,这将加快查询follower_id followed_id的查询。它不会对您的列施加任何其他约束,例如 UNIQUE 。因此它们可以具有相同的值

这里
add_index :relationships, [:follower_id, :followed_id], unique: true

该过程与上述过程相同,但有一个约束条件,即follower_id followed_id组合应不同。如果您尝试在多行中为这些列重复相同的组合值,则会引发错误。

关于ruby-on-rails - add_index到数据模型-Ruby on Rails教程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19899424/

10-13 03:25