檢視原始碼 mix phx.gen.context (Phoenix v1.7.14)
產生一個圍繞 Ecto schema 的函數 context。
$ mix phx.gen.context Accounts User users name:string age:integer
第一個引數是 context 模組,其次是 schema 模組及其複數名稱(用作 schema 資料表名稱)。
此 context 是 Elixir 模組,用作給定資源的 API 邊界。一個 context 通常包含許多相關資源。因此,如果 context 已存在,它將會透過給定資源的函數進行擴充。
注意:一個資源也可以透過個別的 context 來分割(例如 Accounts.User 和 Payments.User)。
Schema 負責將資料庫欄位對應到 Elixir 結構。
總言之,此產生器會將以下檔案新增至 lib/your_app
- 使用
accounts.ex
中的 context 模組,用作 API 邊界 - 在
accounts/user.ex
中的 schema,搭配users
資料表
也會產生存放庫用於搬遷的檔案,以及 context 的測試檔案。
略過 schema 來產生
在某些情況下,您可能會希望啟動 context 模組和測試,但保留自行執行 context 和 schema 的內部實作。使用 --no-schema
旗標就能執行這項工作。
資料表
預設情況下,用於搬遷和 schema 的資料表名稱會是為資源提供的複數名稱。如果要自訂此值,可以提供 --table
選項。例如
$ mix phx.gen.context Accounts User users --table cms_users
binary_id
已產生的搬遷可以使用 binary_id
來取得 schema 的主鍵及其參照,選項為 --binary-id
。
預設選項
此產生器使用在你的應用程式 :generators
設定中提供的預設選項。預設如下
config :your_app, :generators,
migration: true,
binary_id: false,
timestamp_type: :naive_datetime,
sample_binary_id: "11111111-1111-1111-1111-111111111111"
可以透過提供對應的開關來覆寫每個呼叫的這些選項,例如 --no-binary-id
以使用一般 id,而不用預設設定,或者 --migration
來強制產生搬遷。
閱讀 phx.gen.schema
的說明文件以取得關於屬性的更多資訊。
略過提示
此產生器會在有相同名稱的現有背景時提示,以提供更多有關如何正確使用 phoenix 背景的指示。您可以使用 --merge-with-existing-context
,略過此提示並自動將新的架構存取函數和測試合併到現有背景。若要避免對現有背景進行變更和離開產生器,請使用 --no-merge-with-existing-context
。