2016-06-27 17 views

Trả lời

3

Không chắc nếu có một hàm built-in để kiểm tra điều này, nhưng bạn có thể viết riêng của bạn như thế này:

defmodule PreloadCheck do 
    def is_preloaded(model, assoc) do 
    case Map.get(model, assoc) do 
     %Ecto.Association.NotLoaded{} -> false 
     _ -> true 
    end 
    end 
end 

Đây assoc sẽ là nguyên tử đại diện cho tên hiệp hội của bạn.

Sử dụng đối sánh mẫu trong case cho phép bạn kiểm tra xem liên kết của bạn đã được tải hay chưa hoặc nó vẫn trả về cấu trúc Ecto.Association.NotLoaded.

+0

Cảm ơn. Tôi kết thúc bằng cách viết một hàm kiểm tra đơn giản nếu liên kết là một danh sách và đếm đó là đã tải. Tôi vẫn hy vọng có điều gì đó của hàm dựng sẵn thực hiện điều này. –

+1

Vâng, bạn có thể sử dụng 'Ecto.assoc_loaded?';) Nó sẽ trả về một bool để nạp hay không. Tôi chỉ không chắc chính xác chức năng này có thời gian bao lâu, ít nhất là cho phiên bản 2.1.4 có sẵn. –

+0

Nơi chức năng này sẽ được viết và làm thế nào sẽ ảnh hưởng đến mô hình? nếu bạn có thể giải thích rằng sẽ là tuyệt vời –

Các vấn đề liên quan