2
A
回答
1
order_column已經實施:在其列做排序,默認情況下它是 left_column_name。例如:acts_as_nested_set:order_column => :位置
如果你想要一個特定的順序,一個新的整數列添加到一個>遷移模型:
t.integer :sort_order
並在您的模型中:
class OrderedTag < ActiveRecord::Base
has_closure_tree order: 'sort_order'
end
2
1
我確認@ kr00lix說了什麼。 我的方法來繞過這個問題:
@item_children = @item.children
@item_children = @item_children.sort_by!(&:your_sort_column)
但我同意,爲了避免無用的內存消耗,這將是更加美好直接設置才能在SQL命令。
5
這樣做將覆蓋數據庫排序:
@item.children.except(:order).order("your_sort_column")
例子:
organization.self_and_descendants.to_sql
=> "SELECT `organizations`.* FROM `organizations` WHERE (`organizations`.`lft` >= 1 AND `organizations`.`lft` < 54) ORDER BY `organizations`.`lft`"
organization.self_and_descendants.except(:order).order("organization_nm").to_sql
=> "SELECT `organizations`.* FROM `organizations` WHERE (`organizations`.`lft` >= 1 AND `organizations`.`lft` < 54) ORDER BY organization_nm"
0
我能夠用遞歸爲此在Rails的:
def add_self_and_children
[self, children.sort_by{|e| e.name}.map{|c| c.add_self_and_children}].flatten
end
然後調用Model.root.add_self_and_children
。
但顯然這涉及一系列海量數據庫命中。
因此,如果有人比我更瞭解SQL遞歸,想將其轉換爲純SQL,那就太神奇了!
BTW,出於某種原因,以下,這將是在數據庫上有點親切,沒有工作:
def add_self_and_children
[self, children.order(:name).map{|c| c.add_self_and_children}].flatten
end
相關問題
- 1. 令人敬畏的WM發射棒
- 2. 令人敬畏的WM 4 run_or_raise功能
- 3. 訂購嵌套集合
- 4. 用於獲取風數據的令人敬畏的API?
- 5. 讓令人敬畏的WM只使用屏幕的一部分
- 6. 令人敬畏的播放器錯誤 - 只有3G
- 7. 字體令人敬畏的CSS路徑限制?
- 8. jQuery插件創建令人敬畏的向下滾動體驗
- 9. 預定義redirect_to以獲得令人敬畏的導航
- 10. 令人敬畏的WM 3.5獨立配置文件
- 11. 更改字體使用CSS的令人敬畏的圖標不起作用
- 12. 令人敬畏的WM:在兩臺顯示器上自動顯示客戶端
- 13. 令人敬畏的WM:標籤作爲m-by-n矩陣? (更多標籤!)
- 14. 令人敬畏的WM,爲應用程序保持焦點異常
- 15. 令人敬畏的WM:重新排列窗口而不改變佈局
- 16. Angularjs嵌套指令訂單
- 17. 在as_json中訂購嵌套關聯
- 18. 訂購線程/嵌套註釋 - PHP
- 19. 在Python中訂購嵌套字典
- 20. 春數據:訂購嵌套屬性
- 21. 兒童(嵌套)元素訂購
- 22. 嵌套評論系統mysql訂購
- 23. Java集訂購
- 24. 在令人敬畏的WM中,有可能有不同的菜單,具體取決於您所在的標籤?
- 25. 令人敬畏的WM - 應用程序的全屏模式,而不需要整個屏幕
- 26. 甚至在vis.js示例中呈現爲正方形的字體令人敬畏的圖標
- 27. 腳本打印作業以指定的間隔運行(令人敬畏的派對)
- 28. 令人敬畏的WM:我如何遍歷所有標籤中的所有客戶端?
- 29. 如何使用CSS和JavaScript編碼這個令人敬畏的發光邊框效果?
- 30. 如何從反應圖標包中縮放(大)字體 - 令人敬畏的圖標
這已經更新:order_column,感謝@askrynnikov指出這 – 2017-05-29 08:36:56