Buduję Rest API przy użyciu rails-api i active-model-serializer w celu łatwego filtrowania wymaganych pól w JSON. Używam również skojarzenia has_one
w tych serializerach. Chciałem tylko wiedzieć, jak określić inną nazwę klucza dla atrybutu has_one
.Używanie innej nazwy klucza dla atrybutu powiązania w szynie api model szeregowy aktywnego modelu
Oznacza to, że mam dwa modele powiedzieć: Employee
i Address
, a tam jest has_one :address
powiedzmy EmployeeSerializer
. Reakcja, która pojawia się:
{
id: 1,
address: {
street: "some_street",
city: "some_city"
}
}
Ale chciałbym uzyskać następującą odpowiedź:
{
id: 1,
stays: {
street: "some_street",
city: "some_city"
}
}
Próbowałem za pomocą has_one :address, :key => :stays
, ale to nie wydają się działać.
Która wersja AMS używacie? Nie jestem dokładnie zaznajomiony z podstawą kodu, ale z szybkiego spojrzenia argument "key" wydaje się nie być uwzględniony we wszystkich nowszych. Aby obejść ten problem, spróbuj zdefiniować 'has_one: stays' wraz z' def stays; object.address; koniec'. – janfoeh
@janfoeh Używam wersji 0.9.0.Również używam innego serializera dla skojarzenia. tj. 'has_one: address, key: 'status', serializer: MyAddressSerializer'. Przyjmuje atrybuty z 'MyAddressSerializer', ale kluczem atrybutu nadal jest' address' – swaroopsm
Ah. Jeśli poprawnie przeczytałem [zmiany między 0.9.0 a 0.9.1] (https://github.com/rails-api/active_model_serializers/compare/v0.9.0...v0.9.1), argument ten był nazywany 'embed_key 'w 0.9.0, a nie' klucz'. – janfoeh