2

我有ParentChild模型。Parent has_many :children,应该以正确的顺序保存在数据库中。我决定将其保存为带有 field 的链表next_id。我知道,有acts_as_list宝石,但它节省了position场地。不是更多的sql-heavy解决方案吗?

不过,您有什么想法我该如何构建它吗?我想保存SRP,所以所有使用 list 的操作都应该在Child模型中。Parent应该已经订购了children

4

1 回答 1

2

将列表中的所有元素与单个父项相关的优点是您可以一次获取并订购它们:

SELECT * FROM list_items WHERE parent_id=? ORDER BY position

你不能用链表结构来做到这一点。相反,您必须一次最多获取两个前一个和下一个条目,并且必须以递归方式对列表中的所有其他记录重复此过程。检索 1000 多个项目的列表是不切实际的。

于 2012-11-07T15:52:41.027 回答