【发布时间】:2016-03-09 15:01:42
【问题描述】:
我知道 Rails 有一个非常可靠的约定来拥有多个控制器名称,例如:CustomersController。 Elixir 似乎不在乎,因为路由的方式不同。有没有一种惯用的方式来命名 Phoenix 中的控制器?
【问题讨论】:
我知道 Rails 有一个非常可靠的约定来拥有多个控制器名称,例如:CustomersController。 Elixir 似乎不在乎,因为路由的方式不同。有没有一种惯用的方式来命名 Phoenix 中的控制器?
【问题讨论】:
为了避免 Rails 中存在的一些由于在哪里使用单数和复数而造成的混乱,Phoenix 决定始终使用单数形式。此更改已在 Phoenix v0.4.0 中进行。以下是原因的解释:
Phoenix 也不强加单数和复数命名规则。 Rails 命名规则可能会使初学者和高级开发人员感到困惑:模型使用单数名称,控制器使用复数名称,URL 助手混合使用两者等等。 Phoenix 一直使用单一规则,就像任何其他 Elixir 代码一样。 您可以为您的表和路由器路径使用复数名称,但这些名称已明确写入您的系统边界。
为了您的方便,我将最重要的部分加粗。如果您想了解有关这些决定是在何处做出的一些讨论,请查看 Phoenix 存储库上的 issue。
【讨论】:
控制器、模型和视图在 Phoenix 中都是单一的。因此,对于客户示例,约定是:
客户控制器 客户视图 客户
支持模型的模式和表是复数形式。
迁移将使用:
create table(:customers)
架构将使用:
schema "customers"
您将单复数版本传递给生成器:
mix phoenix.gen.html Customer customers
【讨论】: