Создать новую таблицу в рубине на рельсах - программирование
Подтвердить что ты не робот

Создать новую таблицу в рубине на рельсах

Я пытаюсь создать новую таблицу в рельсах. Каждый пример, который я нахожу и стараюсь печально, не работает со мной... так что я пробовал до сих пор: (Я использую Ruby версии 1.9 и Rails версии 3.2.13 создание новой модели в терминале:

rails generate model content content_id:auto-generated, law_id:integer, parent_id:integer, titel:string, text:string, content:string, url:string

который сгенерировал следующий код:

class CreateContents < ActiveRecord::Migration
  def change
    create_table :contents do |t|
      t.auto-generated, :content_id
      t.integer, :law_id
      t.integer, :parent_id
      t.string, :titel
      t.string, :text
      t.string, :content
      t.string :url

      t.timestamps
    end
  end
end

если я пытаюсь использовать rab db: migrate, я получаю следующее сообщение об ошибке:

 syntax error, unexpected ',', expecting keyword_end
      t.auto-generated, :content_id
                       ^

если я удалю "," я получаю это сообщение об ошибке:

syntax error, unexpected tSYMBEG, expecting keyword_do or '{' or '('
      t.auto-generated :content_id
                        ^

мои исследования заставили меня также создать такой способ:

class CreateContents < ActiveRecord::Migration
  def change
    create_table :contents do |t|
      t.auto-generated "content_id"
      t.integer "law_id"
      t.integer "parent_id"
      t.string "titel"
      t.string "text"
      t.string "content"
      t.string "url"

      t.timestamps
    end
  end
end

Если я попытаюсь сгребать db с этим примером, я получаю это сообщение об ошибке:

syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '('
      t.auto-generated "content_id"
                        ^

Чем я ошибаюсь?

4b9b3361

Ответ 1

auto-generated не поддерживается тип столбца.

Active Record поддерживает следующие типы столбцов базы данных:

:binary
:boolean
:date
:datetime
:decimal
:float
:integer
:primary_key
:string
:text
:time
:timestamp

Дополнительная информация в http://guides.rubyonrails.org/migrations.html#supported-types

Rails автоматически создаст для вас идентификатор столбца, поэтому просто измените перенос на следующий

class CreateContents < ActiveRecord::Migration
  def change
    create_table :contents do |t|
      t.integer "law_id"
      t.integer "parent_id"
      t.string "titel"
      t.string "text"
      t.string "content"
      t.string "url"

      t.timestamps
    end
  end
end

Ответ 2

Как говорят другие, :auto-generated не поддерживает тип столбца. Кроме того, это не символ, это выражение и анализируется как :auto - generated.

Ответ 3

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