У меня есть модель Счета-фактуры, которая принадлежит Заказчику (и, конечно, счета-фактуры Клиента has_many).
Если я сделаю:
{
@invs = Invoice.find(
:all,
:include => ["customer"],
:conditions => ['somecondition']
)
}
Класс @invs - это массив, и яможно увидеть все атрибуты для 6-го счета в массиве, если я сделаю: @invs[5]
.Однако в этот момент я не вижу связанных атрибутов записей о клиентах.Чтобы получить это, мне нужно сделать @invs[5].customer
.
. Мой вопрос: что такое структура Ruby, которая позволяет получить доступ к записи клиента из записи счета?Я хочу создать новую произвольную запись SomeClass и прикрепить ее к записи счета-фактуры в наборе записей, чтобы я мог сделать @inv[5].someclass
.Это возможно?и если да, то как?
[РЕДАКТИРОВАТЬ - ПОЛНАЯ ИСТОРИЯ] Следующее пытается объяснить, почему я задаю вопрос.
Хотя моя модель счета-фактуры относится к одной таблице в Db my Customerзапись может быть заархивирована и перемещена в другую таблицу с именем Archcustomer, которая идентична структуре Customer.Поэтому у меня есть дополнительные ассоциации, такие как Счет-фактура, принадлежащий Archcustomer и Archcustomer, has_many Счет-фактуры.
Мне нужно получить список счетов-фактур вместе с соответствующей записью клиента (независимо от того, где они хранятся, например, Клиент или Archcustomer), но отсортированы по Заказчику.category_id и Customer.id и Invoice.id.
В моем приведенном выше примере @invs я включил запись клиента и мог бы включить: order => 'customer.category_id, customer.id, счет-фактуру.id ', но если клиент заархивирован, запись клиента равна nil.
Поэтому я подумал, что сделаю следующее:
{
@invs.each do |inv|
next if inv.customer != nil
archcust = Archcustomer.find(inv.customer_id) #since it's not in customer get it from Archcustomer
inv.customer.category_id = archcust.category_id
etc...
...
end
}
, а затем использую @ inv.sort_by.Однако это жалуется, потому что я пытаюсь выделить значение для customer.category_id класса Nil.
Именно тогда я подумал, что если бы я мог прикрепить произвольную запись к Инвойсу, я мог бы заполнить информацию от Archcustomer или Customer и получить общий набор атрибутов для вызова моего sort_by.
OfКонечно, если есть какой-то другой способ получения моего Счета-фактуры, заказанного так, как я хочу, то я буду счастлив с этим.