即使在刷新之后,也无法识别Ecto迁移中的字段

时间:2017-06-11 17:47:29

标签: elixir ecto

我正在关注与此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。变更集中仅支持字段,嵌入和关联(除了:通过)

我做错了什么?

1 个答案:

答案 0 :(得分:2)

这不是没有列的表的问题。您忘了将该字段添加到架构定义中。