Я на Rails 3, и у меня есть SQL-запрос, состоящий из нескольких объединений, которые я создал в Arel.Я хочу выполнить этот запрос из метода в одной из моих моделей, но я не уверен, как это сделать.Оказывается, объект arel имеет тип Arel :: InnerJoin, и я хочу получить массив всех объектов, возвращенных из этого запроса.Запустить ли ModelName.find_by_sql (my_arel_query_object) для этого?Или я запускаю my_arel_query_object.each {...} и перебираю каждый кортеж, чтобы вручную вставить их в массив?
Надеюсь, я проясняю.Любое понимание будет с благодарностью.Спасибо.
Обновлено: вот код, который я использую в своей модели пользователя:
def get_all_ingredients
restaurants = Table(:restaurants)
meals = Table(:meals)
ingredients = Table(:ingredients)
restaurants_for_user = restaurants.where(restaurants[:user_id].eq(self.id))
meals_for_user = restaurants_for_user.join(meals).on(restaurants[:id].eq(meals[:restaurant_id]))
ingredients_for_user = meals_for_user.join(ingredients).on(meals[:id].eq(ingredients[:meal_id]))
return Ingredient.find_by_sql(ingredients_for_user.to_sql)
end
Я пытаюсь сделать так, чтобы все ингредиенты использовались во всех блюдах, предлагаемых для каждого.ресторан принадлежит пользователю.Переменная components_for_user представляет запрос Arel, который я хочу выполнить.Я просто не знаю, как запустить и вернуть все ингредиенты, а Ingredient.find_by_sql ... просто не выглядит правильным.
end