web-dev-qa-db-ja.com

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をrakeしようとすると、次のエラーメッセージが表示されます。

 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をrakeしようとすると、このエラーメッセージが表示されます:

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

何が間違っていますか?

16
Eumundi

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
18
Luís Ramalho

他の人が言うように、:auto-generatedはサポートされている列タイプではありません。また、これは記号ではなく、であり、:auto - generatedとして解析されます。

1
giorgian

Railsジェネレーターへのコマンドライン呼び出しにコンマを入れないでください。これが移行にコンマを入れるのです。

0
webdevguy