2016-08-03 3 views
2

Я пытаюсь разобрать дату и сохранить ее в таблице. Вот функция:Elixir/Phoenix/Timex: протокол Timex.Protocol не реализован для: error

defp string_to_datetime(string) do 
    result = string 
      |> String.split(";") 
      |> List.last 
      |> Timex.parse("{0M}/{0D}/{YYYY} {h12}:{m} {AM}") 
    case result do 
    {dt, _} -> dt 
    :error -> nil 
    end 
end 

Строка необходим вычищение в начале, но я получаю сообщение об ошибке при попытке сохранить его в это поле:

field :first_appointment, Timex.Ecto.DateTime 

Вот ошибка:

** (exit) an exception was raised: 
    ** (Protocol.UndefinedError) protocol Timex.Protocol not implemented for :error 
     (timex) lib/protocol.ex:1: Timex.Protocol.impl_for!/1 
     (timex) lib/protocol.ex:36: Timex.Protocol.to_datetime/2 

Действительно не уверен, что это значит. Есть идеи?

ответ

2

Timex.parse/2 рассчитывает вернуть либо {:ok, dt} или {:error, reason}

Вы должны изменить свой случай результат:

case result do 
    {:ok, dt} -> dt 
    {:error, reason} -> IO.inspect reason 
end 

Это от реализации Timex:

@spec parse(String.t, String.t) :: {:ok, DateTime.t | NaiveDateTime.t} | {:error, term} 
+0

Ах, спасибо, вам ! Довольно новый для эликсира. –

Смежные вопросы