Синтаксические ошибки миграции при добавлении инструкций utf-8 и InnoDB в Rails

Я пытаюсь создать эту миграцию рельсов

class CreateFormats < ActiveRecord::Migration
  def self.up
    create_table (:formats , :options => 'ENGINE=InnoDB DEFAULT CHARSET=utf8' ) do |t|
      t.name
      t.description 
      t.company

      t.timestamps
    end
  end

  def self.down
    drop_table :formats
  end
end

И я получаю ошибки во время выполнения, которые выглядят так:

синтаксическая ошибка, неожиданное ',', ожидание ')' create_table (:formats, :options => 'ENGINE=InnoDB D... ^ синтаксическая ошибка, неожиданное ')', ожидание ключевого_конца ...=InnoDB DEFAULT CHARSET=utf8' ) сделать |т| ... ^

синтаксическая ошибка, неожиданное ключевое слово_end, ожидание $end

Есть идеи, почему это произошло? Я не могу найти никаких проблем с моим синтаксисом. Скорее всего, потому что я новичок в Rails :)


person GeekedOut    schedule 25.05.2011    source источник


Ответы (1)


Ваш синтаксис неверен:

create_table (:formats , :options => 'ENGINE=InnoDB DEFAULT CHARSET=utf8' ) do |t|

должно быть

create_table(:formats , :options => 'ENGINE=InnoDB DEFAULT CHARSET=utf8' ) do |t|

то есть: без пробела. В противном случае вы просто группируете :formats с :options => ... в качестве первого аргумента функции.

наверное тоже надо менять

t.name
t.description 
t.company

к чему-то вроде

t.string :name
t.string :description 
t.string :company
person Pan Thomakos    schedule 25.05.2011
comment
первоначальные ошибки были исправлены, но теперь у меня есть это: неопределенное имя метода для #‹ActiveRecord::ConnectionAdapters::TableDefinition:0x92cdb94› - person GeekedOut; 26.05.2011
comment
Я только что добавил примечание об этом к своему ответу, но остальная часть синтаксиса определения вашей таблицы также немного отличается. - person Pan Thomakos; 26.05.2011