0

Railsで次のようなDB移行を作成してみました。

rubyスクリプト/スキャフォールドの生成postuser_id:int title:string content:text

結果の.rbファイルを見ると、確かに、入力したすべてのものが表示されました。

class CreatePosts < ActiveRecord::Migration
  def self.up
    create_table :posts do |t|
      t.int :user_id # there it is: user_id
      t.string :title
      t.text :content

      t.timestamps
    end
  end

  def self.down
    drop_table :posts
  end
end

しかし、データベースを実行して検査した後、列が作成されrake db:migrateていないことがわかりました。user_idここで何が起こったの?

4

2 に答える 2

3

あるべきなのでt.integer、ではありませんt.int。詳細については、ドキュメントを参照してください。

add_column(table_name, column_name, type, options):次のタイプのいずれかに指定されたnamedという名前のテーブルtable_nameに新しい列を追加します:、、、、、、、、、、、、、。column_name:string:text:integer:float:decimal:datetime:timestamp:time:date:binary:boolean

于 2010-09-19T21:53:54.687 に答える
3

次のものも使用できます。

t.references :user

そして、user_idと呼ばれる整数フィールドを作成します。外部キーを参照しているので、私は個人的にこの方法を好みます。

于 2010-09-20T00:12:23.257 に答える