Я хочу сгенерировать токен и вставить его в мой mysql db, это текущий код, который передается только «123». 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
конец
я добавил 'defp random_string (длина)' в мой контроллер, как я могу назвать random_string в моей Map.Merge? – Joseph
itried 'token_params = Map.merge (token_params,% {значение: Token.random_string (32)})' и возвращает ошибку 'функция MyApp.Token.random_string/1 не определена или закрыта ' – Joseph
@JAlcantara 'Map.merge (token_params,% {"value" => random_string (32)}) '? Более целесообразно использовать здесь «Map.put»: «Map.put (token_params,« value », random_string (32))». – Dogbert