elixir - 如何正确使用mix phx.gen.html?收到错误:“(混合)预期架构“帖子”是有效的模块名称”
问题描述
我正在尝试从这个视频中学习长生不老药和凤凰:https ://www.youtube.com/watch?v=KiP23mk760E&list=PLtTtLKRL6UYGxOHToRYnXBynon5plZ7Jd&index= 2 尽管相当新鲜,但在某些信息上似乎已经过时了。例如,“mix phoenix.gen.html”被“mix phx.gen.html”取代,这就是我目前正在努力解决的问题。在视频中显示命令:
mix phoenix.gen.html Post posts title:string body:text
但是当我尝试执行时: mix phx.gen.html Post posts title:string body:text 我收到一个错误,开头为:“(Mix)期望架构“posts”是一个有效的模块名称”和我在这里迷路了。我已经阅读了 phx.gen.html 的文档,但这对我没有多大帮助,因为我不知道应该使用什么模块。我尝试使用 --no-context 但这没有帮助,我仍然遇到同样的错误。基本上我的问题是:如何使用 phx.gen.html 以便让我继续该教程。
解决方案
由于 elixir 是一种非常年轻的语言,2017 年的视频已经过时,从那时起很多基础设施都发生了变化。在这个时间点,elixir 和 phoenix 相当稳定,至少 elixir 不会再收到任何重大变化,但是旧视频对您没有太大帮助。
phoenix 中引入了上下文概念来替换模型结构。它背后的想法是,您不会将所有模式都放在模型文件夹中,而是将一堆模式分组在一个上下文中,女巫是一个公共领域,您可以从phoenix 的原始创建者那里更多地了解它是如何工作的.
为了更清楚,现在 gen 的定义是这样的:
mix phx.gen.html [Context] [Schema name] [Table name] [Fields] ...
所以基本上你只需要在其他一切之前添加你的上下文,就像这样:
mix phx.gen.html Articles Post posts title:string body:text
PS:与其追随那个过时的系列,只需观看一些人们教授如何使用 Ecto 之类的会议的会议,这个特别好,因为它通过不将凤凰纳入项目中明确区分了 Ecto 所代表的内容。
推荐阅读
- selenium - 仅在使用 Windows 启动应用程序时使用 .AddExtensions
- google-apps-script - 在写入 Google 表格之前从输出中删除“未定义”
- javascript - 指纹js2中同一台机器上的不同指纹
- linq - 使用 linq/lambda 在 2 个数据表之间更新
- f# - 是否可以定义一个将多个函数应用于单个参数的 F# 运算符(几乎与 ||> 运算符相反)?
- scala - Spark scala数据框:将多列合并为单列
- node.js - ioredis 未处理的错误事件:错误:连接 ETIMEDOUT
- unit-testing - ABAP 相等性检查对于 INT4 和 CHAR 数字是错误的
- r - 在 CMD 中安装 R 脚本包时出错
- docker - 处理 tar 文件时出错(退出状态 1):在数据目录存在时使用 docker-compose 构建时出现意外 EOF