私はトークンを生成してそれを私のmysql dbに挿入したいと思います。これは現在のコードです。 mix phoenix.gen.secretはランダムな文字列を生成することができます。どうすればそれをコントローラに使用できますか?フェニックスのフレームワークコントローラを使用してランダムな文字列を生成
def create(conn, %{"token" => token_params}) do
token_params = Map.merge(token_params, %{"value" => "123"})
changeset = Token.changeset(%Token{}, token_params)
case Repo.insert(changeset) do
{:ok, token} ->
conn
|> put_status(:created)
|> put_resp_header("location", token_path(conn, :show, token))
|> render("show.json", token: token)
{:error, changeset} ->
conn
|> put_status(:unprocessable_entity)
|> render(MyApp.ChangesetView, "error.json", changeset: changeset)
end
エンド
iが追加 'defpのrandom_string(長さ)'私のコントローラでは、私は私のMap.Mergeにrandom_string呼び出すことができますか? – Joseph
それは 'token_params = Map.merge(token_params、%{value:Token.random_string(32)})' 'を返し、関数MyApp.Token.random_string/1が未定義またはプライベートであることを返します ' – Joseph
@JAlcantara 'Map.merge (token_params、%{"value" => random_string(32)}) '? 'Map.put(token_params、" value "、random_string(32))'のように、ここで 'Map.put'を使う方が適切です。 – Dogbert