即使在冲洗后也无法识别 Ecto 迁移中的字段
Does not recognize field in Ecto migration, even after flush
我正在关注与此类似的事情 ,通过添加一个字段并在迁移中填充它。
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) unknown field urltitle
. Only fields, embeds and associations (except :through ones) are supported in changesets
我做错了什么?
这不是 table 没有列的问题。您忘记将字段添加到架构定义中。
我正在关注与此类似的事情
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) unknown field
urltitle
. Only fields, embeds and associations (except :through ones) are supported in changesets
我做错了什么?
这不是 table 没有列的问题。您忘记将字段添加到架构定义中。