1

RadRails を使用して MYSQL データベース テーブルを作成しています。これは移行タスクです:

class CreateEvents < ActiveRecord::Migration
  def self.up
    create_table :events do |t|
      t.string :eventname
      t.string :evententryurl
      t.string :eventurl

      t.timestamps
    end
  end

  def self.down
    drop_table :events
  end
end

次に、db:migrate Rake タスクを実行します。これにより、データベース テーブル内に次のフィールドが作成されます。

id
eventname
evententryurl
eventurl

よし、ここまで。私が抱えている問題は、アプリケーションを実行してhttp://localhost/events/newに移動 すると、アプリケーションがidではなく主キーであるため、eventidを探していることです。eventid を主キーとしてデータベースに自動的に配置するように移行タスクを変更するにはどうすればよいですか?

4

1 に答える 1

1

id移行でのデフォルトの主キー名を でオーバーライドしようとしているようですeventid。モデルで使用したため、アプリケーションはeventid代わりに探していると思います。idset_primary_key :eventid

必要なものは次のとおりです。

http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-create_table

:primary_key 主キーが自動的に追加される場合の主キーの名前。デフォルトは ID です。:id が false の場合、このオプションは無視されます。

また、これはテーブルに主キーを設定するだけであることに注意してください。さらに、set_primary_key マクロを使用して、モデルの主キーを構成する必要があります。モデルは、テーブル定義から主キーを自動検出しません。

于 2011-01-12T19:32:39.783 に答える