2017-06-11 36 views
0

我下面類似這樣的東西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

你該字段添加到'POST'你的模式定義? –

+0

不,我沒有。有與update_all一個問題(我試過update_all([]),如在第二個答案,但也沒有工作。我想這個具體的問題已經解決了,雖然,謝謝! –

回答

2

這不是與不具有該列的表中的問題。您忘了將該字段添加到您的架構定義中。