http://github.com/collectiveidea/awesome_nested_set軌搜索類別的子類別
真棒組嵌套的插件,目前,如果讓我選擇一個子類別作爲我CATEGORY_ID一個項目,我不能其父搜索。
Category.parent
Category.Child
我選擇Category.child作爲我的物品所在的類別。所以現在我的物品的category_id已存儲在其中。
如果我在我的Rails應用程序中訪問一個頁面,可以說類別頁面和我在Category.parent的頁面上,我想要顯示具有所有後代的category_id的產品。
所以理想情況下,我想有一個可以考慮到後代的查找方法。您可以通過調用root.descendants(一種內置的插件方法)來獲取根的後代。
我該如何去做,所以我可以查詢獲取根的後代的查找,而不是現在正在做的事情,除非產品具有Category.parent的特定category_id,否則它什麼都沒有。
我希望我在這裏很清楚。我需要找出一種方法來創建一個find方法或named_scope,它可以查詢和返回一個對象的數組,這些對象具有相應的根,或者如果我有其他選項,它們是什麼?
我想過在我的產品表中創建一個字段,比如可以跟蹤父項的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
因爲某個產品屬於某個類別,而某個類別有許多產品。然而,後代函數會返回所有後代的數組。我如何過濾這些並獲得組合產品?
哎JDL確實,如果類別具有多個子類別這項工作? Mysql ::錯誤:操作數應該包含1列:SELECT * FROM'products' WHERE(category_id = 4,5)LIMIT 0,4 是我回來了。感謝您的迴應! – jim 2010-04-24 18:36:20
是的,它應該可以用於任何ID的列表。當我第一次發佈這個時,我錯過了named_scope中的一個大括號。再試一次,看看它是否適合你。 – jdl 2010-04-24 18:54:21
啊謝謝jdl我很欣賞這一點。我已將named_scope更改爲named_scope:for_category_ids,lambda {| ids | {:conditions => [「category_id =?」,(ids)]}}這是它失敗的原因。非常感謝。 – jim 2010-04-24 19:42:53