在Rails 3中執行復雜的Arel查詢我在Rails 3上,並且我有一個SQL查詢由我在Arel中構建的一些連接組成。我想在我的模型中的某個方法中運行此查詢,但我不確定如何執行此操作。 arel對象結果是Arel :: InnerJoin的類型,我想要檢索從該查詢返回的所有對象的數組。我是否運行ModelName.find_by_sql(my_arel_query_object)來執行此操作?或者,我運行my_arel_query_object.each {...}並迭代每個元組以手動將它們彈出到數組中?如何從Model
我希望我能讓自己清楚。任何有識之士將不勝感激。謝謝。
更新:這裏是我我的用戶模型中使用的代碼:
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
我想在這裏做的就是在每個餐館的用戶擁有所提供的所有餐點使用的所有成分。 ingredients_for_user變量表示我希望運行的Arel查詢。我只是不知道如何運行&返回所有的成分,而Ingredient.find_by_sql ...似乎並不正確。
端
請出示碼您目前必須生成查詢。 – 2010-08-08 05:53:16
我剛將它添加到我的文章。 – pushmatrix 2010-08-08 16:00:26
@pushmatrix你怎麼解決這個問題? – squiter 2013-06-13 13:13:40