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()
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