Rails 3 ActiveRecord: найдите модель, найдя ее ассоциацию - PullRequest
6 голосов
/ 03 мая 2011
class OrderItem belongs_to Item and belongs_to Order

class Item has_many OrderItems and belongs_to ItemType

class ItemType has_many Items

class Order has_many OrderItems

Я хотел бы, в пределах Order, найти все OrderItems, чьи элементы имеют тип ItemType

def get_by_item_type(id)
  order_items.where(:item => {:item_type_id => 3})

Очевидно, что я могу сделать это, найдя все OrderItems, циклы, тестирование и построив свой собственныйколлекция.Нет проблем, но мне интересно, есть ли другой способ?

Спасибо / J

1 Ответ

4 голосов
/ 03 мая 2011

Это будет сделано с:

def get_by_item_type(id)
  order_items.joins(:item).where(:item_type_id => id)
end

Если вы получили сообщение об ошибке в несуществующем / неоднозначном столбце, взгляните на

order_items.joins(:items).to_sql

чтобы найти правильные имена столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...