Я все еще получаю Ecto.Association.NotLoaded даже после предварительной загрузки с помощью Repo.preload ().У меня есть схема магазина has_many: books, когда я пытаюсь добавить магазин создания, я получаю эту ошибку:
%App.Stores.Store{__meta__: #Ecto.Schema.Metadata<:loaded, "stores">,
name: "mystore", description: "book store", id: 13, inserted_at:
N[2018-10-10 16:52:24.155385], name: "mystore", books:
#Ecto.Association.NotLoaded<association :books is not loaded>,
updated_at: ~N[2018-10-10 16:52:24.155397]}
Я исследовал и обнаружил, что ассоциация my: books не была загружена, поэтому ядобавил это в контекст моего магазина
def list_stores do
Repo.all(Store)
Repo.preload(:books)
end
Но все равно получаю ту же ошибку.
Пожалуйста, это моя схема
schema "stores" do
field :description, :string
field :name, :string
has_many :books, Myapp.Books.Book
field :owner, :string
timestamps()
end
@doc false
def changeset(store, attrs) do
market
|> cast(attrs, [:name, :description, :owner])
|> validate_required([:name, :owner ])
end
и
schema "books" do
field :title, :string
field :author, :string
belongs_to :store_id, Myapp.Stores.Store
timestamps()
end
@doc false
def changeset(pair, attrs) do
pair
|> cast(attrs, [:name, :description])
|> validate_required([:name, :description])
end
и, наконец, мой файл миграции
def change do
create table(:books) do
add :title, :string
add :name, :string
add :store_id, references(:stores, on_delete: :nothing)
timestamps()
end
create index(:books, [:store_id])
end
end
Пожалуйста, я не понимаю, я новичок в elixir и искал другие решения, так как предварительная загрузка не работает.Кажется, я где-то напутал в своем коде, пожалуйста, где я ошибся?
Спасибо.