Hi,
I have a simple User model, and i want to make another one which is a "couple" of user.
Here is what i've done on the cli:
````
mix phoenix.gen.model Couple couples partner1_id:references:users partner2_id:references:user
````
My migration looks like this
````
defmodule OurChild.Repo.Migrations.CreateCouple do
use Ecto.Migration
def change do
create table(:couples) do
add :partner1_id, references(:users)
add :partner2_id, references(:users)
timestamps
end
create index(:couples, [:partner1_id])
create index(:couples, [:partner2_id])
end
end
````
And then here is what I'm doing in the controller's action that save a new couple based on thwo user that a re already recorded:
````
def couple(conn, params) do
current_user_id = get_session(conn, :current_user)
partner_email = String.downcase(params["partner_email"])
user1 = OurChild.Repo.get_by(User, id: current_user_id)
user2 = OurChild.Repo.get_by(User, email: partner_email)
changeset = Couple.changeset(%Couple{})
Ecto.Changeset.put_change changeset, :partner1, user1
Ecto.Changeset.put_change changeset, :partner2, user2
unless changeset.valid? do
send_resp conn, 500, "Invalid users for a new couple"
else
case OurChild.Repo.insert changeset do
{:error, _} -> send_resp conn, 500, "Failed to create couple"
{:ok, _couple} ->
send_resp conn, 200, "Couple created"
end
end
````
Does anyone see something that i'm missing here ?