2017-05-24 8 views
0

私はSequel :: Modelを使用しています。私のモデルはset_schemaブロックとcreate_table呼び出しを持っているので、データベースはモデルによって完全に管理されます。データベースはsqliteです。Sequelモデルで管理されているテーブルに列を追加します

データベースに列を追加しようとしていますが、方法を見つけることができません。スキーマにフィールドを追加しても効果はありません。移行またはalter_table呼び出しを追加しても何も行われません。私はIRCに尋ねて、ドキュメントを読んだ。私はこれを行う人の例を見つけることができませんが、それは単純なようです。

Sequelモデルに列/フィールドを追加するにはどうすればよいですか?

+0

実行時にこれを実行しますか?これらのすべてのタイプの質問に対する私の推奨は、 'attributes'と' attribute_values'と呼ばれる別のテーブルを作成することです。モデルは単にあなたのmodel.idのattribute.id、attribute.idという多数の 'attribute_values'を持つことができますその属性の値を指定します。これは非常に柔軟性があり、実行時にスキーマを変更する必要はありません – engineersmnky

答えて

0

私はたくさんの研究を行い、Jeremy Evansと話をしました。私はこれについて間違っていた。これを行う正しい方法は、私のスキーマ・プラグイン・コードとcreate_tableブロックを削除し、マイグレーションを使用することに移行することでした。私が通過した手順は以下の通りであった。

  1. 私modeslからスキーマコード(CREATE_TABLE、set_schema)を取り外し
  2. 続編を経由して移行ファイルに最初の移行に私の現在のsqliteのデータファイルからスキーマをダンプコマンド
  3. を-d
  4. マイグレーションを実行して、にこれらのタスクをフックするためにすくいタスクを作成続編-mコマンド
  5. 経由の移行を適用
  6. 変更ブロックにALTER_TABLEブロックにADD_COLUMNコールを経由して、私は必要な列を追加し、新たな移行を作成します。私の展開タスク
関連する問題