【发布时间】:2011-06-15 23:53:28
【问题描述】:
我有三个模型,基本上:
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_items 进行排序,但这意味着要通过关联的item,因为这是关联所在。
我的第一次尝试是将SaleItem 更改为以下内容:
class SaleItem
belongs_to :item
has_one :vendor, :through => :item
end
这允许我查找 SaleItem.first.vendor,但不允许我执行以下操作:
SaleItem.joins(:vendor).all(:order => "vendors.name")
有没有一种简单的方法来找出这些复杂的关联和排序?如果有一个插件可以处理这些事情,那就太好了。我有很多不同类型的表要在这个应用程序中添加排序,我觉得这将是计算工作的很大一部分。
【问题讨论】:
-
所以您只想按相关供应商对商品进行分类?
-
SaleItems 有一个与 items.id 相关联的外键列 (sale_items.item_id),而 Items 有一个与 vendor.id 相关联的外键列 (items.vendor_id)。我想按与其关联项目关联的供应商对销售项目进行排序。
标签: ruby-on-rails sqlite sorting activerecord