Ruby on rails rails在类别中搜索子类别
很棒的嵌套集插件,目前,如果我选择一个子类别作为我的类别id,我不能按父类别搜索Ruby on rails rails在类别中搜索子类别,ruby-on-rails,ruby,plugins,nested,Ruby On Rails,Ruby,Plugins,Nested,很棒的嵌套集插件,目前,如果我选择一个子类别作为我的类别id,我不能按父类别搜索 Category.parent Category.Child 我选择Category.child作为项目所在的类别。因此,现在我的物品中存储了4个category_id 如果我转到rails应用程序中的某个页面,比如说Category页面,我在Category.parent的页面上,我希望显示具有所有子体的Category_id的产品 因此,理想情况下,我希望有一个可以考虑后代的find方法。您可以通过
Category.parent
Category.Child
我选择Category.child作为项目所在的类别。因此,现在我的物品中存储了4个category_id
如果我转到rails应用程序中的某个页面,比如说Category页面,我在Category.parent的页面上,我希望显示具有所有子体的Category_id的产品
因此,理想情况下,我希望有一个可以考虑后代的find方法。您可以通过调用root.subjects(内置插件方法)获得根的子代
我该如何做才能查询一个查找,从而获取根的后代,而不是它现在所做的事情,除非产品具有category.parent的特定category\u id,否则它什么都没有
我希望我在这里说得很清楚。我需要找到一种方法来创建一个find方法或命名的_范围,该方法可以查询并返回一个对象数组,这些对象的id对应于根的后代,或者如果我有任何其他选项,它们是什么
我考虑在我的products表中创建一个字段,比如parent_id,它可以跟踪父对象,这样我就可以创建两个命名的作用域,一个查找父对象,另一个查找子对象并链接它们
我知道我可以为每个子级创建一个命名范围,并为多个子级将它们链接在一起,但这似乎是一个非常繁琐的过程,而且,如果添加更多子级,则需要指定更多的命名范围
//this is what i tried first
@category = Category.find(params[:id])
@child_products = @category.descendants.products
//this actually works but only for one
@child_products = @category.descendants.first.products
因为一个产品属于一个类别,而一个类别有很多产品。但是,后代函数返回所有后代的数组。如何筛选这些产品并获得组合产品?将命名范围移动到您的
产品
模型,因为这正是您试图显示的内容
# product.rb
named_scope :for_category_ids, lambda {|ids| {:conditions => {:category_id => ids}}}
然后在控制器中:
@products = Product.for_category_ids(@category.descendants.map(&:id))
嘿,如果一个类别有多个子类别,jdl会这样做吗?Mysql::错误:操作数应包含1列:从
products
WHERE(category_id=4,5)中选择*限制0,我得到的是4。谢谢你的回复!是的,它应该适用于任何ID列表。当我第一次发布这篇文章时,我在命名范围中遗漏了一个括号。再试一次,看看它是否适合你。啊,谢谢jdl,我很感激。我已将命名的_范围更改为命名的_范围:对于_category_id,lambda{| ids{:conditions=>[“category_id=?”,(ids)]},这就是它失败的原因。谢谢。