mix phx.gen.context
Исходный кодСоздаёт контекст с функциями для схемы Ecto.
$ mix phx.gen.context Accounts User users name:string age:integer
Первый аргумент — модуль контекста, за которым следуют модуль схемы и его имя во множественном числе (используется как имя таблицы схемы).
Контекст — это модуль Elixir, который служит границей API для заданного ресурса. Контекст часто содержит множество связанных ресурсов. Поэтому, если контекст уже существует, в него будут добавлены функции для заданного ресурса.
Примечание: ресурс также можно разделить между разными контекстами (например, Accounts.User и Payments.User).
Схема отвечает за преобразование полей базы данных в структуру Elixir.
В целом этот генератор добавит следующие файлы в lib/your_app:
- модуль контекста в
accounts.ex, служащий границей API - схему в
accounts/user.exс таблицейusers
Также будут созданы файл миграции для репозитория и тестовые файлы для контекста.
Создание миграции можно пропустить с помощью --no-migration.
Области видимости
Если в вашем приложении настроена собственная область видимости по умолчанию scope, этот генератор автоматически обеспечит корректное применение областей видимости ко всем операциям контекста. Чтобы отключить применение областей видимости, передайте флаг --no-scope.
Создание без схемы
В некоторых случаях может потребоваться создать модуль контекста и тесты, оставив внутреннюю реализацию контекста и схемы на своё усмотрение. Для этого используйте флаги --no-schema.
--table
По умолчанию именем таблицы для миграции и схемы будет имя ресурса во множественном числе. Чтобы настроить это значение, можно указать параметр --table. Например:
$ mix phx.gen.context Accounts User users --table cms_users
--binary-id
В созданной миграции для первичного ключа схемы и ссылок на него можно использовать binary_id с параметром --binary-id.
Параметры по умолчанию
Этот генератор использует параметры по умолчанию, заданные в конфигурации :generators вашего приложения. Вот эти значения:
config :your_app, :generators, migration: true, binary_id: false, timestamp_type: :naive_datetime, sample_binary_id: "11111111-1111-1111-1111-111111111111"
Эти параметры можно переопределить для отдельного вызова, указав соответствующие флаги: например, --no-binary-id, чтобы использовать обычные идентификаторы вопреки настройкам по умолчанию, или --migration, чтобы принудительно создать миграцию.
Дополнительные сведения об атрибутах см. в документации phx.gen.schema.
Пропуск запросов
Если уже существует контекст с таким же именем, генератор задаст вопрос и предоставит дополнительные инструкции по правильному использованию контекстов Phoenix. Этот запрос можно пропустить и автоматически объединить новые функции доступа к схеме и тесты с существующим контекстом с помощью --merge-with-existing-context. Чтобы не вносить изменения в существующий контекст и завершить работу генератора, используйте --no-merge-with-existing-context.
© 2014 Chris McCord
Licensed under the MIT License.
https://phoenix.hexdocs.pm/Mix.Tasks.Phx.Gen.Context.html