У меня три модели, в основном:
class Vendor
has_many :items
end
class Item
has_many :sale_items
belongs_to :vendor
end
class SaleItem
belongs_to :item
end
По сути, каждый sale_item
указывает на конкретный item
(но имеет соответствующее количество и цену продажи, которая может отличаться от базовой цены item
, следовательно, отдельной модели), и каждый item
сделано определенным vendor
.
Я бы хотел отсортировать все sale_item
по имени поставщика, но это означает, что нужно пройти через связанный item
, потому что именно там находится ассоциация.
Моей первой попыткой было изменить SaleItem
на следующее:
class SaleItem
belongs_to :item
has_one :vendor, :through => :item
end
Что позволяет мне искать SaleItem.first.vendor
, но не позволяет мне делать что-то вроде:
SaleItem.joins(:vendor).all(:order => "vendors.name")
Есть ли простой способ выяснить эти сложные ассоциации и сортировку? Было бы особенно здорово, если бы был плагин, который мог бы позаботиться о подобных вещах. У меня есть много разных типов таблиц, к которым можно добавить сортировку в этом приложении, и я чувствую, что это будет большой кусок работы по выяснению.