这是我第一次在同一模型(产品类别)中建模层次结构。
我在这个主题上找到了一个很棒的post。因为我使用Rails 4& Postgres,根据文章支持递归查询(这是我第一次听到这个术语),"带有递归查询的邻接列表"似乎是要走的路,因为它既易于建模又能快速查询。
文章提出了acts_as_sane_tree gem,它支持递归查询。这个repo已经更新两年了,我不确定它是否支持Rails 4.该项目是acts_as_tree gem的一个分支,它支持Rails 4并且维护得很好。 / p>
我应该使用哪种宝石? acts_as_tree gem是否支持递归查询以避免昂贵的查询?
答案 0 :(得分:2)
如果您怀疑使用什么宝石,我总是建议您查看the Ruby Toolbox。它有助于评估gem项目是否仍处于活动状态,有多少开发人员使用此gem以及更多内容。为什么你知道这样做?不想选择不再维护的宝石。您希望使用社区使用的工具并保持与主流的接近。如果您不遵循社区,如果您需要修复错误,进一步的文档或想要更新您的Rails版本,您将遇到问题。
在这种情况下,for nested ActiveRecord awesome_nested_set和祖先是很好的候选人。我不会选择Recursive Query实现,因为大多数数据库都不支持此功能。除非您有充分的理由,否则将应用程序绑定到特定的数据库管理系统是不值得的。
答案 1 :(得分:1)
“它公开了所有标准树结构关系(祖先,父,根,子,兄弟,后代),所有这些都可以在一个SQL查询中获取。”