Thank you! yep, I did something like this. There is still a lot of places to improve, but it’s working already:
def get_component!(id) do
Component
|> Repo.get!(id)
|> preloads()
end
defp preloads(component) do
component
|> Repo.preload(Component.get_type_as_atom(component.type))
end
And implemented JSON for model:
def get_type_as_atom(type) do
%{
"html" => :html,
"rss" => :rss
}[type]
end
defimpl Jason.Encoder, for: Component do
def encode(value, opts) do
fields = [Component.get_type_as_atom(value.type) | [:name, :type] ]
m = Map.take(value, fields)
Jason.Encode.map(m, opts)
end
end






















