我正在使用 spree,我想根据产品对产品列表进行排序created_at
。
我试图找到覆盖lib/scopes/product.rb下的 spree 默认范围的方法,但找不到。
我想在公共面板上列出最近创建的产品。我怎么能用狂欢来做到这一点?
我正在使用 spree,我想根据产品对产品列表进行排序created_at
。
我试图找到覆盖lib/scopes/product.rb下的 spree 默认范围的方法,但找不到。
我想在公共面板上列出最近创建的产品。我怎么能用狂欢来做到这一点?
第一个答案将破坏管理面板产品版本,并且可能会破坏 spree 1.1-stable 中的其他内容。
不明确的列名:created_at
您可以通过指定表名来解决此问题:
Product.class_eval do
default_scope order("spree_products.created_at DESC")
end
但我认为最好的解决方案是修补公共产品控制器或视图,而不是模型本身,因为 default_scope 可能不会随处可见,并且切换/删除 default_scope 中定义的订单,您必须调用.re order()
可能正因为如此,SpreeCommerce 文档特别不建议您在产品范围内添加订单:
来源: http: //guides.spreecommerce.com/scopes_and_groups.html#modifying-available-scopes
所以我认为在不破坏 Spree 核心产品模型的情况下这样做的正确方法是覆盖产品模板:
覆盖views/spree/shared/_products.html.rb
代替
<% products.each do |product| %>
和
<% products.descend_by_updated_at.each do |product| %>
来源:https ://groups.google.com/forum/#!topic/spree-user/lW5sGsbMTfM
为我工作™</p>