Rails: Как найти записи по ассоциациям в новом массиве? - PullRequest
0 голосов
/ 01 мая 2011

Я создал отношения has_many, где Еда может быть подана в нескольких видах еды.Например, яйца могут быть поданы на завтрак или поздний завтрак пользователя.

То есть, Еду разрешается подавать только при определенных приемах пищи, и это отслеживается с помощью отношения has_many с именем еды_тип.* Теперь предположим, что я отфильтровал свою исходную таблицу по определенному запросу, например:

@hot_foods = Foods.where(:is_hot => 1). 

И теперь я хочу узнать из горячих блюд только те, которые можно подавать на обед.

В частности, отношения задаются следующим образом:

class Food
has_many :meals, :through => :relationships
has_many :relationships

class Meal
has_many :foods, :through => :relationships
has_many :relationships

class Relationships
belongs_to :food
belongs_to :meals 

Как мне выполнить этот запрос?

1 Ответ

0 голосов
/ 01 мая 2011

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

@meal = Meal.find_by_name('Lunch')
@meal.foods.where('foods.is_hot' => true)

Правильно определенные отношения has_many ..., :through позволяют сделать это довольно простым способом.

...