创建资源后,显示欢迎消息60分钟

时间:2016-11-20 08:03:38

标签: elixir phoenix-framework ecto

我在控制器中有一个带有user函数的资源show

def show(conn, _params) do
  user =
    Repo.get!(User, conn.assigns[:user_id])

  display_welcome_message = false

  conn
  |> assign(:user, user)
  |> assign(:display_welcome_message, display_welcome_message)
  |> render("show.html", conn: conn)
end

我想在user创建后的前60分钟内显示欢迎讯息。如何在该时间范围内将display_welcome_message设置为true?

1 个答案:

答案 0 :(得分:2)

您可以比较user.inserted_at:calendar.universal_time之间的差异:

inserted_at = :calendar.datetime_to_gregorian_seconds(Ecto.DateTime.to_erl(user.inserted_at))
now = :calendar.datetime_to_gregorian_seconds(:calendar.universal_time)
display_welcome_message = now - inserted_at <= 3600
...

一旦Ecto 2.1出局,使用Elixir的新原生DateTime结构,这将变得更加简单:

diff = DateTime.to_unix(DateTime.utc_now) - DateTime.to_unix(user.inserted_at)
display_welcome_message = diff <= 3600