`virtual: true` 对嵌入式模式有影响吗?

Does `virtual: true` have any effect with an embedded schema?

documentation for Ecto.Schema:virtual 选项的说明如下:

:virtual - When true, the field is not persisted to the database.

embedded_schema/1 函数表示它描述了一个专门保存在内存中的模式。 (即它永远不会持久保存到数据库中。)这是否意味着对于嵌入式模式,:virtual 选项无效?

Ecto.Schema.#embedded_schema/1 上的文档实际上说:

An embedded schema is either embedded into another schema or kept exclusively in memory. For this reason, an embedded schema does not require a source name and it does not include a metadata field.

当嵌入到另一个模式中时,它充当直接注入目标模式的片段,并且 :virtual 字段照常运行。

保存在内存中时,:virtual 个字段仍然

  • 允许通过声明类型 :any 来可选地跳过类型检查,这与其他字段不同
  • 未在 __schema__(:fields)
  • 中列出
  • 不支持使用 __schema__(:type, field)
  • 查询类型
  • 不支持 :autogenerate 也不支持 :read_after_writes 选项