Почему Rails проигнорировал мое поле user_id? - PullRequest
0 голосов
/ 20 сентября 2010

Я попытался создать миграцию БД в Rails, которая выглядела примерно так:

ruby script/generate scaffold post user_id:int title:string content:text

Глядя на получившийся файл .rb, достаточно точно, я видел все, что я ввел:

class CreatePosts < ActiveRecord::Migration
  def self.up
    create_table :posts do |t|
      t.int :user_id # there it is: user_id
      t.string :title
      t.text :content

      t.timestamps
    end
  end

  def self.down
    drop_table :posts
  end
end

Но после запуска rake db:migrate и проверки моей базы данных я вижу, что столбец user_id не был создан.Что здесь произошло?

Ответы [ 2 ]

3 голосов
/ 20 сентября 2010

Вы также можете использовать:

t.references :user

и это создаст целое поле с именем user_id.Я лично предпочитаю этот метод, потому что он ссылается на внешний ключ.

3 голосов
/ 20 сентября 2010

Потому что это должно быть t.integer, а не t.int.См. документы для получения дополнительной информации :

add_column(table_name, column_name, type, options): Добавляет новый столбец в таблицу с именем table_name с именем column_name, указанным для одного из следующих типов::string, :text, :integer, :float, :decimal, :datetime, :timestamp, :time, :date, :binary, :boolean.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...