1

新しいリンク テーブルを作成しようとし、移行中に必要な列を指定しました。

db/migrate の下

class CreateLinks < ActiveRecord::Migration
    def change
        create_table :links do |t|
            t.integer :user_id
            t.string :url




            t.timestamps
        end
    end
end


class AddTitleToLink < ActiveRecord::Migration
  def change
    # add_column :links, :user_id, :integer
    add_column :links, :title, :string
  end
end

走ったらrails consoleリンクが戻ってきた

Link(id: integer, created_at: datetime, updated_at: datetime, title: string)

user_id(外部キー)のようで、ありませんurlTitle後で追加されたものを表に示します。

私は何か悪いことをしましたか?

4

2 に答える 2

2

CreateLinks編集して 2 つのフィールドを追加する前に、移行を実行したのではないでしょうか? その場合、そのファイルを 1 日中変更でき、rake db:migrate再実行することはありません。これは、空の tablelinksと、次の移行でそれに追加したフィールドがあることを説明します。

を実行すると、データベースを元に戻すことができますrake db:rollback。それを 2 回実行してから、もう一度移行してください。

于 2013-10-12T19:15:18.383 に答える
1

これが機能しない理由は見当たりません。最初に実行した可能性はありますか:

rails g model Link 

(移行を生成し、RANした)

:url と :user_id? を手動で追加しましたか?

2回実行してみてください:

rake db:rollback

その後、もう一度実行します

rake db:migrate

これにより、手動での変更に追いつくことができます

于 2013-10-12T19:15:20.207 に答える