Добро пожаловать в переполнение стека!
Хотя phoenix-framework можно было бы назвать «Rails for Elixir», шаблоны проектирования и архитектурные соображения очень разные. Предоставление случайных функций, которые «могут использоваться для множества вещей», на самом деле не является частью философии.
Но хорошая сторона в том, что если ваш сценарий использования требует чего-то подобного, очень легко расширить существующую функциональность с помощью макросов, поведения или протоколов. Для вашего простого варианта использования вы действительно можете создать универсальный метод (или набор методов), но я бы потерял tuple
:
defmodule Account do
def get(clauses) do
Repo.get_by(Account, clauses)
end
end
Вы можете позвонить, используя:
Account.get(email: "user@example.com")
Но я бы поспорил, если замена одного однострочного на другой действительно добавит достаточную ценность вашей кодовой базе, чтобы это оправдать.
Примечание: Я фактически создал библиотеку для добавления помощников модели в стиле Rails к схемам Ecto в приложениях Elixir для упрощения работы разработчиков Rails в Phoenix , подвергая методы, подобные тому, что делает active-record. Также см. Примечание о сложных запросах .