Все еще получает Ecto.Association.NotLoaded после использования Repo.preload - PullRequest
0 голосов
/ 10 октября 2018

Я все еще получаю 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 и искал другие решения, так как предварительная загрузка не работает.Кажется, я где-то напутал в своем коде, пожалуйста, где я ошибся?

Спасибо.

1 Ответ

0 голосов
/ 10 октября 2018

Я наконец понял, это был мой StoreView.Я удалил store.title из схемы и все еще вызывал его в представлении.Я могу добавлять новые книги и магазины сейчас.Не могу поверить, что эта мелочь долго держала меня, спасибо, ребята за ваш вкладОчень ценю!

Большое вам спасибо.

...