我正在使用“编程凤凰”一书来学习凤凰。第一个项目创建了一个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'表示应该是什么样的?
答案 0 :(得分:5)
Elixir 1.4在调用导入或本地定义的函数时添加了一个警告,其中0个参数没有括号,因为当你有一个与函数同名的局部变量并且你编写变量时它应该是什么意思是不明确的没有括号的名字。
[Kernel]如果变量用作函数调用,则发出警告
这本书可能尚未针对Elixir 1.4进行更新。凤凰生成器已更新,添加括号in June 2016。