2013-12-26 2 views
0

Поскольку я новичок в Rails, я следую за этим 'getting started' guide на сайте rails.Rails add_index отсутствует при запуске команды GENERATE

В разделе 6.1 «Создание модели» я должен запустить rails generate model Comment commenter:string body:text post:references, чтобы получить модель комментария.

Возможно, это то, что должно быть включено в файл переноса:

class CreateComments < ActiveRecord::Migration 
    def change 
    create_table :comments do |t| 
     t.string :commenter 
     t.text :body 
     t.references :post 

     t.timestamps 
    end 

    add_index :comments, :post_id 
    end 
end 

Но в моей миграции файла, у меня есть все, кроме этой линии add_index :comments, :post_id. Вместо этого у меня есть index:true, следующий за t.references :post

Я не могу найти объяснения этому, может ли кто-нибудь объяснить мне, что здесь происходит? Потому что позже мне нужно использовать: post_id, но в моей версии миграции он явно не объявлен. Я очень смущен.

+0

опубликовать точный миграционный файл – shiva

ответ

2
class CreateComments < ActiveRecord::Migration 
    def change 
    create_table :comments do |t| 
     t.string :commenter 
     t.text :body 
     t.references :post 

     t.timestamps 
    end 

    add_index :comments, :post_id 
    end 
end 

и

class CreateComments < ActiveRecord::Migration 
    def change 
    create_table :comments do |t| 
     t.string :commenter 
     t.text :body 
     t.references :post, index: true 

     t.timestamps 
    end 

    end 
end 

будет делать то же, оба из них добавит индекс в столбец post_id

также вы можете добавить индекс в любой столбец, любой столбец, который вы хотите добавить в свой модель как

$ rails generate migration AddPartNumberToProducts part_number:string:index 

, который будет производить этот код:

class AddPartNumberToProducts < ActiveRecord::Migration 
    def change 
    add_column :products, :part_number, :string 
    add_index :products, :part_number 
    end 
end 
+0

Полезно знать, но в том, что новая функция использования «индекса: правда»? – donkey

0

в коде выше, если вы хотите создать индекс для POST_ID затем записать его как t.integer :post_id еще вы можете попробовать это add_index :comments, :post

Смежные вопросы