Size: a a a

2019 January 21

BB

Boris Beginin in pro.elixir
Alex Bubnov
а документация - я хз, все равно придется лезть в код и экспериментировать
с доркипером слава богу не пришлось, все было плюс минус по маслу
источник

ŹR

Źmićer Rubinštejn in pro.elixir
До тех пор пока не появится два разных скоупа юзеров - все будет по маслу
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Только не по маслу, а по рельсам
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Проблема рельс только в том, что с них хрен свернешь
источник

BB

Boris Beginin in pro.elixir
Не могу не согласиться)
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Хотя нет смысла инсинуировать дальше эту тему...
источник

PS

Petr Stepchenko in pro.elixir
Артем Паньков
Есть штат рубистов которых я перевожу на эликсир
Так прекрасный проект для перевода
источник

IS

Ilya Shuma in pro.elixir
Пока дискуссия подутихла, повторю вопрос
источник

IS

Ilya Shuma in pro.elixir
Коллеги, добрый вечер.

Такой вопрос. Мне нужно реализовать ряд фильтров, пример одного из них:

defp filter(query, field, :is_nil) do
   where(query, [u], is_nil(field(u, ^field)))


Это решает задачу, если нужно отфильтровать поле, которое есть в схеме. Но есть задача фильтровать поля, которых в схеме нет, в этом случае нужно сделать так:

defp filter(query, field, :is_nil) do
   where(query, [u], is_nil(fragment("(?->>?)", u.custom_params, ^field)))
end


Как можно изящно изолировать доступ к нужному полю от логики фильтра?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Здравствуйте, это организация "СТОП AR"
Почему у вас есть поля, которых нету в схеме?
источник

AB

Alex Bubnov in pro.elixir
Źmićer Rubinštejn
Здравствуйте, это организация "СТОП AR"
Почему у вас есть поля, которых нету в схеме?
потому что там json field
источник

IS

Ilya Shuma in pro.elixir
Ну да, условно в users хранится инфа о пользователях из разных проектов и поэтому свойства нужно разные хранить
источник

IS

Ilya Shuma in pro.elixir
Поэтому что общее описано в схеме, кастомные поля в json
источник

ŹR

Źmićer Rubinštejn in pro.elixir
А как же строгая типизация, наследование и тыды?
источник

ŹR

Źmićer Rubinštejn in pro.elixir
На самом деле надо хранить список полей, которые есть в схеме, и диспатчить на соответствующую ветвь в зависимости от вхождения переданного поля в этот список
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Иначе никак
источник

IS

Ilya Shuma in pro.elixir
Список полей хранится, по сути у меня так сейчас и сделано. Я просто думал, что в ecto можно как-то вынести обращение в полю, чтобы не повторять кондишн where два раза в двух разных функциях
источник

АП

Артем Паньков in pro.elixir
Źmićer Rubinštejn
Почему вы блин на эликсире медленне делаете чем на руби
в рельсах на каждый чихпых есть пару юзабельных гемов. омг, да даже тот же девайс в сто раз быстрее поднять чем кохеренс.
а некоторый области как например админка ваще надо на фениксе говнякать руками, то что есть - не годится

или например файлы. arc - ну так себе

есть некоторые области, где вообще пробел - например, wsdl клиент, работа с ролями пользователей

короче, это всё не ново. есть целый ряд задач на эликсире, которые надо ручками делать, это тормозит процесс относительно фреймворков с большим сообществом
источник

AD

Anastasiya Dyachenko in pro.elixir
Ilya Shuma
Коллеги, добрый вечер.

Такой вопрос. Мне нужно реализовать ряд фильтров, пример одного из них:

defp filter(query, field, :is_nil) do
   where(query, [u], is_nil(field(u, ^field)))


Это решает задачу, если нужно отфильтровать поле, которое есть в схеме. Но есть задача фильтровать поля, которых в схеме нет, в этом случае нужно сделать так:

defp filter(query, field, :is_nil) do
   where(query, [u], is_nil(fragment("(?->>?)", u.custom_params, ^field)))
end


Как можно изящно изолировать доступ к нужному полю от логики фильтра?
с использованием фрагмента только ручками

def get_field(query, field) when field in @json_fields do
  fragment("(?->>?)", query, ^field)
end

def get_field(query, field) do
  field(query, field)
end

ps https://hexdocs.pm/ecto/Ecto.Query.API.html#field/2
источник

IS

Ilya Shuma in pro.elixir
Anastasiya Dyachenko
с использованием фрагмента только ручками

def get_field(query, field) when field in @json_fields do
  fragment("(?->>?)", query, ^field)
end

def get_field(query, field) do
  field(query, field)
end

ps https://hexdocs.pm/ecto/Ecto.Query.API.html#field/2
Спасибо!
источник