Rails рендеринг JSON после запроса - проблема: перезапись одинаковых имен полей SELECT - PullRequest
1 голос
/ 28 декабря 2011

Ниже приведен запрос, который я создаю, затем выводим json на основе результатов.Однако поля SELECT с одинаковыми именами перезаписываются, например, food.name и food.id перезаписываются restaurant.name и restaurant.id.

Я опробовал строку запроса в SQLite, и он возвращает все столбцы, которые мне нужно найти, но не выводится должным образом как вывод JSON.Любая помощь будет оценена.Спасибо

Вот мой код рельсов в моем контроллере

    @meals = Meal.find(:all,
                  :select => 'meals.name, meals.id, sum(meal_ratings.rating), restaurants.name', 
                  :joins => 'LEFT JOIN meal_ratings, restaurants ON meals.id = meal_ratings.meal_id AND restaurants.id = meals.restaurant_id',
                  :group => 'meal_ratings.meal_id ',
                  :order => 'meal_ratings.rating DESC')
    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @meals } #  
    end

Вот результаты:

[{"id":1,"name":"Parkside","sum(meal_ratings.rating)":2},
{"id":2,"name":"Parkside","sum(meal_ratings.rating)":1},
{"id":3,"name":"EVK","sum(meal_ratings.rating)":-1}]

Вот идентичная команда SQL:

SELECT meals.name, meals.id, sum(meal_ratings.rating), restaurants.name
FROM meals 
LEFT JOIN meal_ratings, restaurants ON meals.id = meal_ratings.meal_id AND restaurants.id = meals.restaurant_id
GROUP BY meal_ratings.meal_id 
ORDER BY meal_ratings.rating DESC

Вот результаты SQL

name|id|sum(meal_ratings.rating)|name
Pizza|1|2|Parkside
Pork Chops|2|1|Parkside
Spaghetti|3|-1|EVK

1 Ответ

0 голосов
/ 28 декабря 2011

Вы можете использовать псевдонимы SQL, чтобы обойти эту проблему:

:select => 'meals.name as meal_name, meals.id as meal_id, sum(meal_ratings.rating) as meal_rating, restaurants.name as restaurant_name'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...