18

我尝试在 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

如果我尝试 rake 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

如果我尝试使用该示例来 rake db,则会收到以下错误消息:

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

我做错了什么?

4

3 回答 3

20

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 会自动为您创建列 ID,因此只需将您的迁移编辑为以下内容

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
于 2013-05-05T20:27:22.450 回答
1

正如其他人所说,:auto-generated它不是受支持的列类型。此外,它不是一个符号,它是一个表达式,它被解析为:auto - generated.

于 2013-05-05T20:29:50.983 回答
0

不要将逗号放在对 rails 生成器的命令行调用中,这就是将这些逗号放在迁移中的原因。

于 2015-06-03T15:04:12.210 回答