Size: a a a

2019 March 01

RS

Roman Suleymanov in pro.elixir
ну это в любом случае base64 валидная ссылка точно
источник

IB

Ilya Borovitinov in pro.elixir
Nicolae Paraschiva
Я делаю Repo.insert(..., foo_id: 123)
У меня на этот foo_id есть not null констрейнт, нужный foo с таким id в базе существует
Но в консоле в это время "оно" пытается вставить в базу все поля, кроме этого foo_id, там null
Это какая-то особенность ассоциаций в фениксе?
Слушай, если приведенный код - дословный копипаст из твоего, то это просто невреное использование функции
источник

IB

Ilya Borovitinov in pro.elixir
https://hexdocs.pm/ecto/Ecto.Repo.html#c:insert/2
У тебя это foo_id должно быть не в opts кейвордом, а в struct/changeset, который идет первым аргументом
источник

IB

Ilya Borovitinov in pro.elixir
Соответственно его туда можно запихать либо через
Ecto.build_assoc(foo, :relation) |> Relation.changeset(params) |> Repo.insert()
либо через changeset напрямую
%Relation{} |> Relation.changeset(%{ foo_id: 123, ...}) |> Repo.insert()
источник

IB

Ilya Borovitinov in pro.elixir
но во втором случае оно должно упоминаться в cast/4 в Relation.changeset/2
источник

МБ

Максим Барулин in pro.elixir
Roman Suleymanov
ну это в любом случае base64 валидная ссылка точно
как-то не очень
Base.decode64("AAAAAEgFyxVMX7hw5Oo3Bw")
:error
источник

RS

Roman Suleymanov in pro.elixir
Ну там ничего не закодировано, нечего и декодировать)
источник

RS

Roman Suleymanov in pro.elixir
Имел в виду "содержит текстово-цифровые латинские символы A-Z, a-z и 0-9 (62 знака) и 2 дополнительных символа, зависящих от системы реализации"
источник

RS

Roman Suleymanov in pro.elixir
И ничего другого
источник

IB

Ilya Borovitinov in pro.elixir
Мне кажется, даже просто alphanumeric
источник

NP

Nicolae Paraschiva in pro.elixir
Ilya Borovitinov
Соответственно его туда можно запихать либо через
Ecto.build_assoc(foo, :relation) |> Relation.changeset(params) |> Repo.insert()
либо через changeset напрямую
%Relation{} |> Relation.changeset(%{ foo_id: 123, ...}) |> Repo.insert()
я для краткости так написал
оно в changeset попадает
сделал без ассок
источник

NP

Nicolae Paraschiva in pro.elixir
просто в каст добавил, как посоветовали
источник

NP

Nicolae Paraschiva in pro.elixir
Какие есть средства по просмотрку определений/документации функций и модулей из консоли?
источник

MY

Mikhail Yashkov in pro.elixir
h Kernel.spawn
источник

NP

Nicolae Paraschiva in pro.elixir
Еще такой вот вопрос:

Мне нужно доставать из базы по 100к записей n раз и что-то с ними делать
Как можно это сделать?
В AR это find_each и find_in_batches
источник

MY

Mikhail Yashkov in pro.elixir
Стрим не подойдёт?
https://hexdocs.pm/ecto/Ecto.Repo.html#c:stream/2
источник

NP

Nicolae Paraschiva in pro.elixir
Я боялся, что ты так ответишь :)
источник

NP

Nicolae Paraschiva in pro.elixir
А как такую фигню в стрим засунуть?
Foo |> Repo.all() |> Repo.preload(bar: :baz)
источник

AB

Anton Bogdanov in pro.elixir
а надо ли? сперва берешь данные с БД, затем уже массив через стримы и енамы обрабатываешь?
источник

m

madeinussr in pro.elixir
я не пробовал, но вот спека у этой ф-ции такая

stream(queryable :: Ecto.Queryable.t(), opts :: Keyword.t()) :: Enum.t()

Ecto.Queryable - это же "запрос" от from до select, включая join, preload и прочие, не?
источник