Sorry, I was supposed to ask in your migrations and schema. :) There is a chance this is an Ecto bug, can you reproduce this in a public application?
On Thursday, May 26, 2016, <[email protected]> wrote: > In my migrations I have specified binary_id: > > * def change do* > * create table(:offers, primary_key: false) do* > * add :id, :binary_id, primary_key: true* > * add :percentage, :float, null: false* > * add :shipment_id, references(:shipments, on_delete: :delete_all, > type: :binary_id), null: false* > > * timestamps* > * end* > > * create index(:offers, [:shipment_id])* > * end* > > > It has been mapped to a UUID column in Postgres. > > Op donderdag 26 mei 2016 21:03:34 UTC+2 schreef José Valim: >> >> Can you tell me what is the type of your ID columns in the database and >> in your migrations? >> >> >> >> *José Valim* >> www.plataformatec.com.br >> Skype: jv.ptec >> Founder and Director of R&D >> >> On Thu, May 26, 2016 at 8:44 PM, <[email protected]> wrote: >> >>> My bad, this is rc-5. >>> >>> Op donderdag 26 mei 2016 20:19:34 UTC+2 schreef José Valim: >>>> >>>> Which RC version? I believe this may have been fixed on more recent RCs. >>>> >>>> >>>> >>>> *José Valim* >>>> www.plataformatec.com.br >>>> Skype: jv.ptec >>>> Founder and Director of R&D >>>> >>>> On Thu, May 26, 2016 at 8:09 PM, <[email protected]> wrote: >>>> >>>>> This is Ecto 2.0.0-rc, through phoenix_ecto 3.0.0-rc.0 >>>>> >>>>> Op donderdag 26 mei 2016 19:51:44 UTC+2 schreef José Valim: >>>>>> >>>>>> Which Ecto version are you using? >>>>>> >>>>>> *José Valim* >>>>>> www.plataformatec.com.br >>>>>> Skype: jv.ptec >>>>>> Founder and Director of R&D >>>>>> >>>>>> On Thu, May 26, 2016 at 6:30 PM, <[email protected]> wrote: >>>>>> >>>>>>> So I have been digging a little deeper and Ecto is issuing the >>>>>>> following query: >>>>>>> >>>>>>> *SELECT r0."id", *snip*, o1."offer_id" FROM "rates" AS r0 INNER JOIN >>>>>>> "offers_rates" AS o1 ON o1."offer_id" = ANY($1) WHERE (o1."rate_id" = >>>>>>> r0."id") ORDER BY o1."offer_id" [[<<163, 3, 242, 94, 74, 2, 77, 110, >>>>>>> 159, >>>>>>> 78, 123, 64, 97, 42, 5, 33>>]]* >>>>>>> >>>>>>> >>>>>>> This comes up as an empty association in my code. When I do the >>>>>>> following query in psql however, I do get the result I expect: >>>>>>> >>>>>>> *SELECT * FROM rates INNER JOIN offers_rates ON >>>>>>> offers_rates.offer_id='a303f25e-4a02-4d6e-9f4e-7b40612a0521' WHERE >>>>>>> offers_rates.rate_id = rates.id <http://rates.id>; * >>>>>>> >>>>>>> >>>>>>> Does this offer some more insight? >>>>>>> >>>>>>> Op donderdag 26 mei 2016 18:09:47 UTC+2 schreef [email protected]: >>>>>>> >>>>>>>> Hi José, >>>>>>>> >>>>>>>> Thanks for the fast response. That doesn't seem to do it however. >>>>>>>> If I do not preload anything, I get an error message saying that the >>>>>>>> offers >>>>>>>> are not preloaded. If I preload the offers, it says the rates are not >>>>>>>> preloaded, and if I preload everything, with force set to true, the >>>>>>>> rates >>>>>>>> are still empty. Is there anything else I can try? >>>>>>>> >>>>>>>> Op donderdag 26 mei 2016 17:07:36 UTC+2 schreef José Valim: >>>>>>>>> >>>>>>>>> Try: >>>>>>>>> >>>>>>>>> *offers = Repo.preload(shipment, [offers: :rates], force: true)* >>>>>>>>> >>>>>>>>> If the association was already loaded, we won't load over it. >>>>>>>>> >>>>>>>>> *José Valim* >>>>>>>>> www.plataformatec.com.br >>>>>>>>> Skype: jv.ptec >>>>>>>>> Founder and Director of R&D >>>>>>>>> >>>>>>>>> On Thu, May 26, 2016 at 5:05 PM, <[email protected]> wrote: >>>>>>>>> >>>>>>>>>> Hello, >>>>>>>>>> >>>>>>>>>> I have a many-to-many relationship defined as follows: >>>>>>>>>> >>>>>>>>>> * schema "rates" do* >>>>>>>>>> * many_to_many :offers, Offer, join_through: "offers_rates"* >>>>>>>>>> * end* >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> * schema "offers" do* >>>>>>>>>> * many_to_many :rates, Rate, join_through: "offers_rates"* >>>>>>>>>> * end * >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> The offers_rates table is simply a table that has a offer_id >>>>>>>>>> column, and a rate_id column. I am saving records as follows: >>>>>>>>>> >>>>>>>>>> * Enum.map rates, fn (rate) ->* >>>>>>>>>> * Offer.changeset(%Offer{rates: [rate]}, %{shipment_id: >>>>>>>>>> rate.shipment_id, percentage: 1.05})* >>>>>>>>>> * |> Repo.insert!()* >>>>>>>>>> * end * >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> For every rate, this is generating an offer. I am association the >>>>>>>>>> rates with the offer in the changeset. This seems to work as I can >>>>>>>>>> see the >>>>>>>>>> join table being filled properly. When I try to fetch them later, the >>>>>>>>>> association is empty however: >>>>>>>>>> >>>>>>>>>> *offers = Repo.preload(shipment, offers: :rates)* >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> * %Offer{rates: []} * >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Are these the proper ways of association records and fetching >>>>>>>>>> them from the database again? Any push in the right direction is >>>>>>>>>> greatly >>>>>>>>>> appreciated. >>>>>>>>>> >>>>>>>>>> Thanks! >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>> Google Groups "elixir-lang-talk" group. >>>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>>> send an email to [email protected]. >>>>>>>>>> To view this discussion on the web visit >>>>>>>>>> https://groups.google.com/d/msgid/elixir-lang-talk/90e0e96e-a6ca-4111-b4cc-e9d180b99b6b%40googlegroups.com >>>>>>>>>> <https://groups.google.com/d/msgid/elixir-lang-talk/90e0e96e-a6ca-4111-b4cc-e9d180b99b6b%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>>>>> . >>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "elixir-lang-talk" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to [email protected]. >>>>>>> To view this discussion on the web visit >>>>>>> https://groups.google.com/d/msgid/elixir-lang-talk/589094f3-2694-4b15-9d39-03d8e4869682%40googlegroups.com >>>>>>> <https://groups.google.com/d/msgid/elixir-lang-talk/589094f3-2694-4b15-9d39-03d8e4869682%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>> . >>>>>>> >>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>> >>>>>> >>>>>> >>>> >> -- *José Valim* www.plataformatec.com.br Skype: jv.ptec Founder and Director of R&D -- You received this message because you are subscribed to the Google Groups "elixir-lang-talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-talk/CAGnRm4K3nvc8Y367G%2BP4U_94tStEfgZ7pjAUVkC1E3WCjpQz_A%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
