Как получить много-много дополнительных данных, используя: через? - PullRequest
0 голосов
/ 05 ноября 2011

У меня типичная настройка модели:

Store has_many Items
Orders has_many Items :through OrderItems
OrderItems

Тем не менее, в OrderItems у меня есть поле с названием «количество», чтобы сообщить мне, сколько из каждого элемента в заказе. Я не могу понять, как правильно получить эту информацию.

ex. Order.find(1).order_items # has the list of items, but no "quantity" field

Есть мысли?

Ответы [ 2 ]

1 голос
/ 05 ноября 2011

У меня была такая же ситуация. Я использовал другую ассоциацию для этого. Как

Store has_many Items
Orders has_many Items :through OrderItems
Orders has_many OrderItems

Он будет использовать тот же order_id для отображения, а затем

Order.find(1).order_items # has the list of order_items, with "quantity" field in there
0 голосов
/ 05 ноября 2011

У меня был похожий вопрос: Получение ошибки метода при попытке прочитать атрибут из модели соединения

Проблема, с которой вы сталкиваетесь, заключается в том, что вы пытаетесь получить атрибут order_items для хэша Orders. Даже если вы говорите рельсам только найти (1), он все равно получает хеш, так как не знает, что при выполнении поиска (1) будет схвачен только один элемент. Я верю, что если вы сделаете Order.find(1).first.order_items.quantity (не уверен на 100%, что это сработает), это должно сработать, поскольку вы говорите рельсам, что будет извлечена только одна вещь. Кроме того, вы можете циклически просматривать полученные заказы, выполнив что-то вроде этого:

  @orders = Order.find(1)
  @orders.each do |order|
    order.order_items.quantity
  end

однако, если вы пытаетесь получить 'count' order_items, вам нужно использовать .count вместо .quantity. Ваш вопрос немного сбивает с толку.

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