查看源代码 mix phx.gen.context (Phoenix v1.7.14)
生成一个包含 Ecto 架构相关函数的上下文。
$ mix phx.gen.context Accounts User users name:string age:integer
第一个参数是上下文模块,后面跟着架构模块及其复数名称(用作架构表名称)。
上下文是一个 Elixir 模块,作为给定资源的 API 边界。上下文通常包含许多相关资源。因此,如果上下文已经存在,它将使用给定资源的函数进行扩展。
注意:资源也可以跨不同的上下文分割(例如 Accounts.User 和 Payments.User)。
架构负责将数据库字段映射到 Elixir 结构。
总的来说,这个生成器将以下文件添加到 lib/your_app
- 一个位于
accounts.ex
中的上下文模块,作为 API 边界 - 一个位于
accounts/user.ex
中的架构,包含一个users
表
还会生成一个用于存储库的迁移文件以及上下文的测试文件。
不使用架构生成
在某些情况下,您可能希望引导上下文模块和测试,但将上下文的内部实现和架构留给自己。使用 --no-schema
标志来实现这一点。
表格
默认情况下,迁移和架构的表名将是为资源提供的复数名称。要自定义此值,可以使用 --table
选项。例如
$ mix phx.gen.context Accounts User users --table cms_users
二进制 ID
生成的迁移可以使用 binary_id
作为架构的主键及其使用 --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
的文档。
跳过提示
如果存在具有相同名称的现有上下文,该生成器将提示您,以便提供有关如何正确使用凤凰上下文,您可以跳过此提示,并使用 --merge-with-existing-context
自动将新的架构访问函数和测试合并到现有上下文中。要防止更改现有上下文并退出生成器,请使用 --no-merge-with-existing-context
。