-
Notifications
You must be signed in to change notification settings - Fork 69
Open
Description
I expect there to be no database UPDATE when I add a date to the changeset that is identical to the one in the database, just like with native dates. However it looks like there is always an update happening. Is this a bug or am I using it wrong?
iex|34 ▶ {:ok, some_date} = "2018-05-15T13:05:00.000+0000"|> Timex.parse!("{ISO:Extended}")|> Timex.Timezone.convert("Europe/Berlin") |> Timex.Ecto.TimestampWithTimezone.cast()
{:ok, #DateTime<2018-05-15 15:05:00.000+02:00 CEST Europe/Berlin>}
iex|35 ▶ episode = Directory.get_episode! 1
SELECT ... [1]
%Directory.Episode{
...
publication_date: #DateTime<2018-05-15 15:05:00+02:00 CEST Europe/Berlin>,
updated_at: #DateTime<2018-05-15 15:20:50Z>
}
iex|36 ▶ Directory.update_episode(episode, %{publication_date: some_date})
begin []
UPDATE "episodes" SET "publication_date" = $1, "updated_at" = $2 WHERE "id" = $3 [{{2018, 5, 15}, {13, 5, 0, 0}}, {{2018, 5, 15}, {15, 22, 4, 0}}, 1]
SELECT ...
{:ok,
%Directory.Episode{
publication_date: #DateTime<2018-05-15 15:05:00.000+02:00 CEST Europe/Berlin>,
updated_at: #DateTime<2018-05-15 15:22:04Z>
}}Context (shortened):
def update_episode(%Episode{} = episode, attrs) do
result =
episode
|> Episode.changeset(attrs)
|> Repo.update()
enddefmodule Directory.Episode do
use Ecto.Schema
import Ecto.Changeset
import Ecto.Query
@timestamps_opts [
type: Timex.Ecto.DateTime,
autogenerate: {Timex.Ecto.DateTime, :autogenerate, []}
]
schema "episodes" do
field(:publication_date, Timex.Ecto.TimestampWithTimezone)
timestamps()
end
@doc false
def changeset(%Episode{} = episode, attrs) do
episode
|> cast(attrs, [
:publication_date,
])
end
endReactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels