Создать новую таблицу в ruby on rails
Я пытаюсь создать новую таблицу в rails. Каждый пример, который я нахожу и пытаюсь, к сожалению, не работает со мной... так вот что я пробовал до сих пор: (я использую 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
если я попытаюсь сгрести 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
если я попытаюсь сгрести БД с этим примером, я получу это сообщение об ошибке:
syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '('
t.auto-generated "content_id"
^
что я делаю не так?
3 ответов
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
Как говорят другие, :auto-generated
не является поддерживаемым типом столбца. Кроме того, это не символ, это выражение и разбирается как :auto - generated
.
Не ставьте запятые в вызов командной строки генератору rails, это то, что помещает эти запятые в вашу миграцию.