ruby-on-rails – Rails – 如何通过它来订购模型有很多关联?
我有两个型号:
#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 我想按照最高优先级的类别订购我的产品,然后按产品名称订购 例如,我有: >糖果,优先级= 3 3件商品: >巧克力冰淇淋,有甜点和糖果类别, 而且我希望他们这样订购: >猕猴桃(首先因为水果是最优先的) 我怎么能在Rails中这样做? Category.order("priority ASC").each do |cat| cat.products.order("name ASC").each do |product| end end 但在这种情况下,新西兰,巧克力冰淇淋和饼干将被复制,因为它们都有几个类别. 编辑:有关我想要实现的更多细节 事实上,我想要的是一张巨大的桌子,在左边,我有所有产品(每个独特产品只有一行)按类别排序……所以我可以有这样的东西: >类别 – 产品 看到?即使水果是甜点和甜点,我希望它只出现在这张桌子中一次.我希望产品出现在他们“最重要”的类别中(这就是我考虑“优先级”的原因). 由于这个巨大的表将用于编辑产品,我希望能够轻松访问产品的属性(每个属性将有一列).所以我真的需要做尽可能少的数据库请求. 感谢任何可能帮助我的人! 解决方法
为了避免重复,你可以试试这个,
Product.joins(:categories).group("products.name").order("categories.priority ASC,products.name ASC") (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |