如何从终端

时间:2016-03-30 13:06:23

标签: elixir phoenix-framework ecto

我在Phoenix应用程序中的Users模型上有一个布尔属性。

如何从终端/命令提示符更新此属性?

例如 - 在Rails控制台(在我的终端中运行rails c)我可以这样做:

u = User.find(1)

u.admin = true

u.save

凤凰城最好的办法是什么? (也许通过iex -S mix? - 我认为这是rails c最接近的事情。

2 个答案:

答案 0 :(得分:5)

iex -S mix打开控制台是对的。

您必须使用Ecto.Changeset结构进行更改。 Ecto.Changeset.change/2是进行任意更改的最简单方法:

alias MyApp.{Repo, User} # for convenience, not required
user = Repo.get(User, 1)
Ecto.Changeset.change(user, %{admin: true}) |> Repo.update!

请注意,如果您想在执行此类更新时运行用户验证,则可能需要使用模型中定义的函数(默认情况下为changeset/2)。

答案 1 :(得分:2)

虽然@ Gazler的答案显然是正确的,但我认为有更简单的方法可以获得相同的结果。

您可以尝试以下方式:

?vFrom=Fri Mar 25 2016 01%3A00%3A00 GMT%2B0100 (CET)

您需要注意,通过这种方法,更改不会成为验证的主题,但是,如果您想要进行简单而安全的更改,则可能无需到达{{1} }。

希望有所帮助!