Я знаю, как отключить корневой элемент глобально, например, Rails 3.1 include_root_in_json или с помощью ActiveRecord::Base.include_root_in_json = false
, но я хочу сделать это только для нескольких запросов JSON (не глобально).
Пока я делал это так:
@donuts = Donut.where(:jelly => true)
@coffees = Coffee.all
@breakfast_sandwiches = Sandwich.where(:breakfast => true)
dunkin_donuts_order = {}
dunkin_donuts_order[:donuts] = @donuts
dunkin_donuts_order[:libations] = @coffees
dunkin_donuts_order[:non_donut_food] = @breakfast_sandwiches
Donut.include_root_in_json = false
Coffee.include_root_in_json = false
render :json => dunkin_donuts_order
Donut.include_root_in_json = true
Coffee.include_root_in_json = true
Есть около 5 случаев, когда мне приходится это делать, иногда с более чем одной моделью, и она совсем не выглядит чистой. Я пытался поместить это в around_filter
с, но исключения нарушали поток, и это также становилось волосатым.
Должен быть лучший способ!