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

Blokh
Hey guys, I’ve got a huge CSV ( around 10 GB ) that needs to be processed hourly Do you guys have any suggestions what is the best prac...
New
kszambelanczyk
Hello! Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app. I creat...
New
RemyXRenard
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New
matt-savvy
Anyone here using Honeybadger? My Honeybadger account is being overwhelmed with noise from some bots. Seeing a lot of Bandit.HTTPError...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
samoloth
Hi, I’ve just set up an application with ash_authentication. There is only magic link strategy for now, so there is no confirmation add o...
New
FlyingNoodle
If a change or preparation module uses Ash.Changeset.get_argument/2 or Ash.Query.get_argument/2 (or any of the other get_argument functio...
New

Other Trending Topics Top

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
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
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
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews