I'm using the grape gem in my rails application. When returning a single record I can use the grape active model serializer. When returning multiple objects I run into an undefined error. How should I structure my multiple campaign records?
app/controllers/api/v1/campaigns.rb
Returning Multiple records
resource :campaigns do
desc "Return all campaigns"
get "", root: :campaigns do
@campaign_array = []
@campaigns = Campaign.all
@campaigns.each do |campaign|
@campaign_array << {
backers: campaign.orders.count,
funded: campaign.orders.completed.sum(:quantity),
campaign: campaign
}
end
@campaign_array
end
end
Output - Error
undefined method `read_attribute_for_serialization'
Returning a single record
desc "Return a campaign"
get ":id", root: :campaign do
@campaign = Campaign.where(id: permitted_params[:id]).first!
{
backers: @campaign.orders.count,
funded: @campaign.orders.completed.sum(:quantity),
campaign: @campaign
}
end
Output
{
"backers": 1,
"funded": 2,
"campaign": {
"id": 5,
"min_funding_goal_units": 20,
"product_name": "Another product",
"product_description": "A product description",
}
}