script
I am testing my endpoint to delete a record. It works fine if record doesn’t have any child associations.
This is the code:
def delete(conn, %{"id" => id}) do
record = get_record(id)
case Repo.delete(record) do
{:ok, struct} ->
send_resp(conn, :no_content, "Record deleted")
{:error, reason} ->
conn
|> put_status(422)
|> render(Admin.ErrorView, "error.json",
code: 422,
message: "Error occurred",
errors: reason
)
end
end
def get_record(id) do
case Repo.get(model, id) do
nil ->
render(Admin.ErrorView, "error.json", code: 404, message: "Record not found")
record ->
record
end
end
But I want to send the proper error message if the record has some relationship with some other records. It returns the internal server error . and not the foreign key error.
Any suggestions?
Thanks
Trending in Questions
Hello!
Suppose you are building workflow (order / task / payment) processing system with the following requirements:
Each workflow con...
New
I’m aware of 2 such projects, are there others?
git: GitHub - team-alembic/realworld: A fullstack Phoenix LiveView application with back...
New
Hi everyone.
My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
Hello folks!
So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
How Can I Optimise Compile Time Dependencies
I have been building an elixir application for about 2 years now. Many modules and files ha...
New
Hi,
we run different LLM models across a cluster, with each node loading a configurable subset. Model-specific queues let nodes consume ...
New
Other Trending Topics
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself.
My main conc...
New
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with.
But I don’t use it anymore.
Serverless was the promis...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #ai
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixirconf-us
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #security
- #hex











Showing Posts 1 to 8- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
kokolegorille
You might use foreign key constraint.
The relevant code should be something like this …
script
Thanks for your suggestion.This foreign key constraint works if we want to create or update child and its parents doesn’t exist. What I want is other way around, Like if we delete a parent. I thought {:error, reason} should throw an error about foreign key but gives server error.
kokolegorille
Well, the example is from Programming Phoenix 1.4, and it is for solving the exact same problem, to put a constraint on the parent, not to be able to delete it if there is still children
PS. You should note the plural and singular form…
In the book, it’s for category, with many videos.
aseigo
Have you tried getting a full backtrace? Or can you post what exact error phoenix is generating?
One thing that pops out to me is that
Ecto.Repo.deletereturns a changeset in the error tuple on failure.. so thereasonin{:error, reason}is a changeset rather than, say, a simple string. So if your template is expecting reason to be a plain renderable string, it probably isn’tAlso, it is possible under certain circumstances (e.g. missing table fields, such as from a typo) for an exception to be thrown and that won’t be caught by your case statement…
Hard to know without seeing more of the code though..
kokolegorille
I made an example with nodes and leafs
I load a node, with leafs…
And here, if I try to delete the node
I cannot delete it, because it has leafs, and I got the message in the changeset.
belaustegui
This is the proper solution. You can also use Ecto.Changeset.no_assoc_constraint which, as stated in the docs:
script
Thanks
script
Appreciate your help.