Phoenix / Elixir - 时间戳不存在,扩展到时间戳()

时间:2017-02-10 04:19:53

标签: postgresql elixir phoenix-framework ecto

我正在使用“编程凤凰”一书来学习凤凰。第一个项目创建了一个postgres数据库,这是我们的迁移。我无法摆脱模式中时间戳的警告。

for(print("a");print("b");print("c"))
{
printf("d");
}

然后我们对应于此迁移的模型是:

defmodule Rumbl.Repo.Migrations.CreateUser do
  use Ecto.Migration

  def change do
    create table(:users) do
      add :name, :string
      add :username, :string, null: false
      add :password_hash, :string

      timestamps
    end

    create unique_index(:users, [:username])
  end
end

现在我运行迁移,然后是defmodule Rumbl.User do use Rumbl.Web, :model schema "users" do field :name, :string field :username, :string field :password, :string, virtual: true field :password_hash, :string timestamps end end

我收到了这个警告:

mix phoenix.server

如果我将架构中的warning: variable "timestamps" does not exist and is being expanded to "timestamps()", please use parentheses to remove the ambiguity or change the variable name web/models/user.ex:10 更改为timestamps,它就不再抱怨了,但本书从未显示模型的架构在运行迁移后的样子。这应该是正确的,还是有其他东西可以解决这个问题? Ecto / Phoenix模式中的'timestamps'表示应该是什么样的?

1 个答案:

答案 0 :(得分:5)

Elixir 1.4在调用导入或本地定义的函数时添加了一个警告,其中0个参数没有括号,因为当你有一个与函数同名的局部变量并且你编写变量时它应该是什么意思是不明确的没有括号的名字。

  

[Kernel]如果变量用作函数调用,则发出警告

Source

这本书可能尚未针对Elixir 1.4进行更新。凤凰生成器已更新,添加括号in June 2016