私はEctoに取り込もうとしているレガシーデータベースを持っています。その中にorder_status_id
の列を持つorders
テーブルがあります。 order_status_id
は、レガシーシステムの一連の定数にマップされます。Ectoスキーマのフィールド名を列名と異なることはできますか?
MyApp.Order
構造体にorder_status
フィールドが含まれていて、整数型IDを意味のあるアトムに変換するカスタムタイプがあります。私はカスタム型を動作させていますが、order_status
という名前のフィールドを、order_status_id
という名前のカラムにどのようにマップするのか分かりません。
レガシーシステムは、オンラインので、DBスキーマを変更し、データベースを使用して、まだ選択肢はないです。これを実現する方法はありますか?
私の理解では、 '2' \チェンジがレコードを作成または永続化するときにのみ実行されるということです。データベースからレコードをロードするときに、この解決策が 'order_status'フィールドに移入するとは思いません。 –
それは本当ですが、ジェネレータからのコード例もすべて見てください。データベースにアクセスする前に、常にチェンジセットを使用する必要があります。これに書き込むとき、チェンジセットはdbにアクセスする必要のないすべてのものと、データベース制約のためのフレンドリなエラーメッセージの検証を提供します。データベースから読み込むときには、チェンジセットも使うべきです: 'model = Repo.get(Model、id)changeset = Model.changeset(model)' – tkowal