kurtz

kurtz OP

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?

First 3 of 3 Posts Switch mode

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

stjefim
Hello! Suppose you are building workflow (order / task / payment) processing system with the following requirements: Each workflow con...
New
jonnycharles
I’m in search of an Elixir library that offers PDF generation capabilities similar to Ruby’s Prawn. While there have been discussions abo...
New
spammy
I’m looking to build a personal workflow to quickly deploy web applications written in elixir/phoenix, for local consumption (ie not on t...
New
dli
Before I dive in myself, did anyone successfully sprinkle Hologram into their existing LiveView app? Looking for hints regarding: Addi...
New
bottlenecked
Hi all, I wanted to ask how the community is dealing with post-release steps. Today we have Ecto migrations, which make sure that the db...
New
roeland
Kia ora, We have been using elixir-google-api to connect to Google Drive. However, with the updates to Tesla due to CVEs this is now bro...
New
rahultumpala
Hello, I have an Elixir backend that implements a custom protocol over TCP. I want to load test the backend and assess the performance o...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
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
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
ausimian
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
juhalehtonen
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

We're in Beta

About us Mission Statement