我正在关注与此answer类似的内容,方法是添加字段并在迁移中填充它。
def up do
alter table(:posts) do
add :urltitle, :string
end
flush()
Repo.all(Post)
|> Enum.map(fn p ->
urltitle =
p.title
|> String.downcase
|> Enum.map(fn c -> case URI.char_unreserved?(c) do
true -> c
false -> '-'
end
end)
|> to_string
Ecto.Changeset.cast(p, %{urltitle: urltitle}, ~w(urltitle))
end)
|> Repo.update_all()
end
使用flush(),它仍然无法识别我的新字段:urltitle。我得到的错误信息是
(ArgumentError)未知字段
urltitle
。变更集中仅支持字段,嵌入和关联(除了:通过)
我做错了什么?
答案 0 :(得分:2)
这不是没有列的表的问题。您忘了将该字段添加到架构定义中。