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"
^
何が間違っていますか?
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
他の人が言うように、:auto-generated
はサポートされている列タイプではありません。また、これは記号ではなく、式であり、:auto - generated
として解析されます。
Railsジェネレーターへのコマンドライン呼び出しにコンマを入れないでください。これが移行にコンマを入れるのです。