dobrygin

dobrygin

Hello! I have structure: Post → Author and Post → Shared → Author. But my nested associations for Author inside Shared doesn’t work.

I got error: ** (KeyError) key :author not found in: #Ecto.Association.NotLoaded<association :shared is not loaded>

Here is my code:

def list_posts_by_author(params) do
{stamp, “”} = Integer.parse(params[“stamp”])
author = params[“author_id”]

stamp = 
  with {:ok, stamp} <- DateTime.from_unix(stamp, :millisecond) do
    DateTime.to_naive(stamp) else err -> err
  end

(from p in Post, 

  preload: [shared: :author],
  preload: [:author],
  where: p.inserted_at < ^stamp,
  where: p.author_id == ^author) 

  |> order_by(desc: :inserted_at)
  |> Repo.all()

end

Thank you!

Showing Posts 5 to 1

dobrygin

dobrygin OP

Yes, im getting error in view, but because of not preloaded association.

dobrygin

dobrygin OP

Here is my view:

def render("post.json", %{post: post}) do if Ecto.assoc_loaded?(post.author) do %{id: post.id, text: post.text, text_title: post.text_title, shared: render_one(post.shared, PostView, "post.json"), author: render_one(post.author, AuthorView, "author.json") } else %{id: post.id, text: post.text, text_title: post.text_title, author_id: post.author_id} end end

dobrygin

dobrygin OP

This is my schema, shared is post

  use Ecto.Schema
  import Ecto.Changeset


  schema "posts" do
    field :text_title, :string
    field :text, :string

    belongs_to :author, Blogus.Earth.Author
    belongs_to :shared, Blogus.Earth.Post

    timestamps()
  end

  @doc false
  def changeset(post, attrs) do
    post
    |> cast(attrs, [:text_title, :author_id, :text, :shared_id])
    |> validate_required([:author_id])
  end  

This is my migration to create shared_id

use Ecto.Migration

def change do
alter table(“posts”) do
add :shared_id, references(:posts, on_delete: :nothing)
end

create index(:posts, [:shared_id])

end

script

script

You sure you are getting this error from this query? Because I saw this error when we are calling some nested schema attribute from views and its association is not preloaded.

On side note you can optimise your query:

      (from p in Post, 
        preload: [:author, [shared: :author]],
        where: p.inserted_at < ^stamp and p.author_id == ^author),           
        |> order_by(desc: :inserted_at)
        |> Repo.all()
kokolegorille

kokolegorille

Welcome, You should show the schemas You are using to have a better answer. In particular Shared schema…

— All posts loaded —

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
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
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
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
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
ryanwinchester
apply_graft/2 doesn’t rewrite an add_many sub-workflow’s deps on an add step. Grafted jobs cancel with “upstream job was deleted” Version...
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
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
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
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
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews