如何从终端更新模型的布尔属性

And*_*rie 1 elixir ecto phoenix-framework

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

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

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

u = User.find(1)

u.admin = true

u.save
Run Code Online (Sandbox Code Playgroud)

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

Gaz*_*ler 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!
Run Code Online (Sandbox Code Playgroud)

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