У меня есть модель Ecto ниже. Когда я визуализую, я хочу, чтобы JSON заменил имя свойства «слои» для «tilemap_layers».Poison.Encoder как переименовать свойства в рендеринге JSON?
В моем приложении много типов «слоев», поэтому, когда я создал схему базы данных, мне нужно было создать однозначно названную схему. Однако этот JSON будет потребляться сторонним клиентом, где он должен быть назван «слоями».
Каков рекомендуемый способ?
Модель здесь:
defmodule MyProject.Tilemap do
use MyProject.Web, :model
@derive {Poison.Encoder, only: [
:name,
:tile_width,
:tile_height,
:width,
:height,
:orientation,
:tilemap_layers,
:tilesets
]}
schema "tilemaps" do
field :name, :string
field :tile_width, :integer
field :tile_height, :integer
field :width, :integer
field :height, :integer
field :orientation, :string
has_many :tilemap_layers, MyProject.TilemapLayer
has_many :tilesets, MyProject.Tileset
timestamps
end
@required_fields ~w(tile_width tile_height width height)
@optional_fields ~w()
@doc """
Creates a changeset based on the `model` and `params`.
If no params are provided, an invalid changeset is returned
with no validation performed.
"""
def changeset(model, params \\ :empty) do
model
|> cast(params, @required_fields, @optional_fields)
end
end
Еще раз спасибо Gazler! Я пытаюсь использовать параметр foreign_key, так как это то, что я действительно хочу –
Woot! Это сработало! Мне нужно было изменить небольшую опечатку. Я изменил foreign_key:: tilemap_id –
@JoshPetitt Вам, вероятно, не нужно указывать 'foreign_key' на самом деле. Не могли бы вы попробовать? – Gazler