在Rails中添加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 ...                             ^ 语法错误,非预期的\')\',需要keyword_end ... = InnoDB DEFAULT CHARSET = utf8 \')做| t | ... ^ 语法错误,意外的keyword_end,期望$ end 知道为什么会这样吗?我的语法找不到任何问题。很可能是因为我不熟悉Rails :)     

解决方法

您的语法不正确:
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