我有 Parent
和 Child
模型。父 has_many :children
,应以正确的顺序保存在数据库中。我决定将其保存为带有字段 next_id
的链表。我知道,有 acts_as_list
gem,但它保存了 position
字段。这不是更重sql的解决方案吗?
尽管如此,您对如何构建它有什么想法吗?我要保存SRP ,因此所有对列表的操作都应该在 Child
模型中。 Parent
应该已经订购了 children
。
最佳答案
将列表中的所有元素都与单个父级相关的优点是您可以一次获取并排序它们:
SELECT * FROM list_items WHERE parent_id=? ORDER BY position
您无法使用链表结构来做到这一点。相反,您必须一次最多获取两个(上一个和下一个条目),并且必须对列表中的所有其他记录递归地重复此过程。检索 1000 多个项目的列表是不切实际的。
关于ruby - Ruby 中的链接列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13272833/