kurtz

kurtz

Hello there,
My first post here.

I am playing out with Elixir and the new Phoenix (1.3). Tried to create a Todo app following the code snippets here: Working with Ecto associations and embeds « Plataformatec Blog

Since it is Phoenix 1.3, I tried to put them into context. However, naming seems to be confusing.

I created the project as follows:

mix phx.gen.html Todo List lists title:string

mix phx.gen.schema Todo.Item items body:text list_id:references:lists

scheme are as follows:

schema "todo_lists" do
    field :title, :string
		has_many :todo_items, TodoApp.Todo.Item

    timestamps()
  end 

…

 schema "todo_items" do
    field :body, :string
    #field :todo_list_id, :id
		belongs_to :todo_list, TodoApp.Todo.List
		
    timestamps()
  end

I receive this error:

Ecto.QueryError at GET /lists/4
deps/ecto/lib/ecto/association.ex:495: field TodoApp.Todo.Item.list_id in where does not exist in the schema in query:

from i in TodoApp.Todo.Item,
where: i.list_id == ^4,
order_by: [asc: i.list_id],
select: {i.list_id, i}

It is clear that alto it should be TodoApp.Todo.Item.todo_list_id for in the DB there is no such field as list_id but todo_list_id.

How to fix this?

Showing Posts 1 to 3

aseigo

aseigo

From the docs at Ecto.Schema — Ecto v3.14.0

:foreign_key - Sets the foreign key, this should map to a field on the other schema, defaults to the underscored name of the current schema suffixed by _id

So by default it will be “todo_list_id”, as that’s the schema name (I would actually expect todo_lists_id?). so you either need to change that “i.list_id” to “i.todo_list_id” in your query or else manually set what the primary key name is in your scheme to just be list_id .. I would do the former, though, as then you don’t have to keep remembering to do this :slight_smile:

kurtz

kurtz OP

Well, thanks. Setting the foreign key solved the issue.
But then again, does this have anything to do with context for before i used the same code snippets in phoenix 1.2 with no problem.

aseigo

aseigo

Yeah, it just changed what the autogen’d schema name is .. :slight_smile:

— All posts loaded —

Where Next? Top

Trending in Questions Top

katta
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
achenet
Hello, I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind. However, when I launch mix phx.server, I get an error...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
Cxx-mlr
I’m working on a small exercise involving update_in/3, and I came up with this solution: data = %{ name: "Periodic Table", category:...
New
ChrisAmelia
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication): toke...
New
dillonoconnor
Is there any way to avoid the Hologram compiler running when using iex? It seems like the front-end code could potentially be disregarded...
New
thiagogsr
** (ArgumentError) expected :max_attempts to be a positive integer, got: {:@, [line: 10, column: 19], [{:max_attempts, [line: 10, column:...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
KristerV
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
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews