创建资源后显示欢迎消息 60 分钟
Display a welcome message for 60 minutes after creating a resource
我有一个资源 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?
您可以比较 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
...
一旦使用 Elixir 的新原生 DateTime 结构的 Ecto 2.1 出来,这将变得更加简单:
diff = DateTime.to_unix(DateTime.utc_now) - DateTime.to_unix(user.inserted_at)
display_welcome_message = diff <= 3600
我有一个资源 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?
您可以比较 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
...
一旦使用 Elixir 的新原生 DateTime 结构的 Ecto 2.1 出来,这将变得更加简单:
diff = DateTime.to_unix(DateTime.utc_now) - DateTime.to_unix(user.inserted_at)
display_welcome_message = diff <= 3600