Я действительно изо всех сил пытаюсь понять контексты в эликсире Феникса.У меня есть три контекста: Auth
(содержит User.ex
), Groups
(Circle.ex
) и Content
(ShareMark.ex
).Внутри каждого из них есть схемы users
, circles
и sharemarks
соответственно.
Я пытаюсь выяснить, как использовать предварительно предоставленный create_circle
вне Groups
контекст.Есть ли что-то аналогичное контексту в Ruby?
Внутри content_test.ex
я пытаюсь определить следующее
@valid_attrs %{circle: Groups.create_circle(%{name: "My test"}), url: "google.com", title: "Google"}
defmodule ShareMark.ContentTest do
use ShareMark.DataCase
alias ShareMark.Content
use ShareMark.Groups
describe "sharemarks" do
alias ShareMark.Content.ShareMark
@valid_attrs %{circle: Groups.create_circle(%{name: "Evan's test"}), url: "google.com", title: "Google"}
@update_attrs %{circle: Groups.create_circle(%{name: "Mike's test"}), url: "duckduckgo.com", title: "DuckDuckGo"}
@invalid_attrs %{circle: Groups.create_circle(%{name: "Bad test"})}
def sharemark_fixture(attrs \\ %{}) do
{:ok, sharemark} =
attrs
|> Enum.into(@valid_attrs)
|> Content.create_sharemark()
sharemark
end
...
end
Здесь circle.ex
defmodule ShareMark.Groups.Circle do
use Ecto.Schema
import Ecto.Changeset
schema "circles" do
field :name, :string
field :creator_id, :id
many_to_many :members, ShareMark.Auth.User, join_through: "users_circles"
has_many :sharemarks, ShareMark.Content.ShareMark
timestamps()
end
@doc false
def changeset(circle, attrs) do
circle
|> cast(attrs, [:name])
|> validate_required([:name])
end
end
Но выдает следующую ошибку:
** (CompileError) test/sharemark/content/content_test.exs:8: undefined function create_circle/1
Google совершенно бесполезен, так как у Феникса так мало вопросов об этом.Извините за такой начинающий вопрос.