2016-03-30 10 views
0

Phoenixアプリケーションのユーザーモデルにブール値属性があります。端末からモデルのブール値属性を更新する方法

ターミナル/コマンドプロンプトからこの属性を更新するにはどうすればよいですか?例えば

- Railsのコンソール(私の端末でrails cを実行している)で、私はこのような何かを行うことができます。

u = User.find(1) 

u.admin = true 

u.save 

フェニックスでこれを行うための最善の方法は何ですか? (iex -S mixによるかもしれない? - 私はそれがrails cに最も近いものだと思う)。

答えて

4

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

Gazlerの答えは明らかに正しい@ながら、私は同じ結果を得るための簡単な方法があると思います。

あなたのような何かを試みることができる:あなたは、シンプルで安全な変更を行いたい場合は、このアプローチに変更があった、しかし、検証の対象となりません、あなたが知っておく必要があり

u = App.Repo(User, 1) # corresponds to -> u = User.find(1) 

u = %{ u | admin: true } # corresponds to -> u.admin = true 

App.Repo.update(u) # corresponds to -> u.save 

changesetに達する必要はありません。

希望に役立ちます!

関連する問題