John_Shelby

John_Shelby

List as a reference to the same schema

Hi :slight_smile: ,

Can I have a reference using the list of ids to that schema where the current reference is?

The way the application currently works is that a question can have an ancestor with a reference via id, and based on the answer in it, it is displayed. I now need to store a list of question ids using multi select instead of question id, and the ids from the list should reference the selected ancestors.

What should the given reference look like please, if it is possible to create it? So far my experience is only with the basic reference type and I can’t find a solution, thank you.

Current code with reference through one id:

Schema:

schema "assessment_questions" do
    field :question, :string
    field :temp_id, :string, virtual: true
.
.
.
    belongs_to :ancestor_question,
               MyApp.AssessmentPipelines.AssessmentPipeline.AssessmentQuestion

    timestamps()
  end

  def changeset(assessment_question, attrs) do
    assessment_question
    |> Map.put(:temp_id, assessment_question.temp_id || attrs["temp_id"])
    |> cast(attrs, [
      :question,
.
.
.
      :ancestor_question_id
    ]) 
.
.
.
  end

Migration

  def change do
    alter table("assessment_questions") do
      add :ancestor_question_id,
          references(:assessment_questions, on_delete: :nothing, type: :binary_id)
    end
  end

Thanks for any help.

Marked As Solved

al2o3cr

al2o3cr

What does the result you’re looking for look like in plain SQL? It can be easier to put together the necessary Ecto parts if you know where you’re heading.

Last Post!

John_Shelby

John_Shelby

Thanks for the reply. :slight_smile:

I finally solved it yesterday without a reference. Finally, I saved the values to the ids list, which I continue to work with. Based on the ids list, I will look up all the necessary questions. Then I get the answers from the selected questions, which I can add as ancestor questions in multiselect.

Where Next?

Popular in Questions Top

JeremM34
Hello, how can I check the Phoenix version ? Thanks !
New
RisingFromAshes
I’ve read in another post that it may be possible with a router helper - but I couldn’t find an appropriate one, and tbh, I’m still just ...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
fayddelight
I tried installing elixir 1.11.2 erlang 23.3.4 via asdf in my zsh shell. Enabled the versions locally and globally. When I list them ...
New

Other popular topics Top

rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list. ...
New
JeremM34
Hello, how can I check the Phoenix version ? Thanks !
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
AstonJ
Seen any cool LiveView demos, sample apps or examples? Please post them here! :003:
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New

We're in Beta

About us Mission Statement