Kul*_*gar 5 ruby-on-rails has-and-belongs-to-many model-associations
我有两个型号:
#Product
class Product < ActiveRecord::Base
has_and_belongs_to_many :categories
attr_accessible :name
...
end
#Category
class Category < ActiveRecord::Base
has_and_belongs_to_many :products, :order => "name ASC"
attr_accessible :name, :priority
end
Run Code Online (Sandbox Code Playgroud)
我想按照最高优先级的类别订购我的产品,然后按产品名称订购
例如,我有:3类:
3件商品:
而且我希望他们这样订购:
我怎么能在Rails中这样做?我不希望我的产品被复制,我知道这样做很容易:
Category.order("priority ASC").each do |cat|
cat.products.order("name ASC").each do |product|
end
end
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,新西兰,巧克力冰淇淋和饼干将被复制,因为它们都有几个类别.有没有一种简单的方法来删除重复?或者有没有办法直接按类别优先顺序订购产品?
编辑:有关我想要实现的更多细节
事实上,我想要的是一张巨大的桌子,在左边,我有所有产品(每个独特产品只有一行)按类别排序......所以我可以有这样的东西:
看到?即使水果是甜点和甜点,我希望它只出现在这张桌子中一次.我希望产品出现在他们"最重要"的类别中(这就是我考虑"优先级"的原因).
由于这个巨大的表将用于编辑产品,我希望能够轻松访问产品的属性(每个属性将有一列).所以我真的需要做尽可能少的数据库请求.
感谢任何可能帮助我的人!Kulgar
为了避免重复,你可以试试这个,
Product.joins(:categories).group("products.name").order("categories.priority ASC, products.name ASC")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2739 次 |
| 最近记录: |