Я создаю API с помощью ActiveModel:: Serializers. Каков наилучший способ изолировать данные условно с помощью параметров?
Поэтому я могу делать запросы типа GET /api/customers
:
"customers": {
"first_name": "Bill",
"last_name": "Gates"
}
И GET /api/customers?embed=address,note
"customers": {
"first_name": "Bill",
"last_name": "Gates"
},
"address: {
"street": "abc"
},
"note": {
"body": "Banned"
}
Что-то вроде этого в зависимости от параметров. Я знаю, что ActiveModel:: Сериализаторы имеют синтаксис include_[ASSOCIATION]?
, но как я могу эффективно использовать его с моих контроллеров?
Это мое текущее решение, но оно не опрятно:
customer_serializer.rb:
def include_address?
!options[:embed].nil? && options[:embed].include?(:address)
end
application_controller.rb:
def embed_resources(resources = [])
params[:embed].split(',').map { |x| resources << x.to_sym } if params[:embed]
resources
end
customers_controller.rb:
def show
respond_with @customer, embed: embed_resources
end
Должен быть более простой способ?