问题标签 [ancestry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
50 浏览

ruby-on-rails - 如何表达rails实例?

我有一个Lines使用ancestry宝石的模型。

我有一个Miniatures模型。

在我的线条视图中,我可以显示该线条的所有相关缩影。这样可行。

我想做的是展示该系列的所有相关缩影,以及它的孩子。

它需要使用 distinct true 或 uniq 以防缩图与 Line 及其子树 Lines 之一相关联。

在与一些研究祖先宝石的人交谈时,我认为以下内容:

他不认为我的问题是 gem 的问题,而是 rails 的问题。

该代码所做的是与缩影(正确)建立链接,但使用该缩影所属的行的 and ,而不是name缩影的and 。经过大量的摆弄,我离让它工作很近了。idnameid

我把代码改成了这个

它现在输出正确的外观。的name缩影。它也有正确的miniature_id但令人困惑的是链接到line路径而不是miniature路径。例如,它显示了微型数字 3 的名称,但链接到localhost:3000/lines/3.

我会继续摆弄它,但如果有人能看到确切的问题,我会欣喜若狂。

干杯。

0 投票
1 回答
2145 浏览

ruby-on-rails - 如何使用带有导轨的祖先宝石急切加载根?

我有一个属于类别的条目模型。类别模型使用祖先,以便我可以嵌套类别。

我想按它们的根类别对一组条目进行分组。我遇到的问题是,为了做到这一点,rails 对每个条目执行查询以获取根类别。因此,如果我有 20 条记录,它将执行 20 个查询以按根类别分组。

我已经通过预先加载类别(如下所示)减少了查询数量,但我不知道如何预先加载类别的根。

这是我正在使用的代码:

控制器

入口.rb

类别.rb

我尝试在 Category 模型上放置一个默认范围,如下所示default_scope { includes(:ancestry) }:但这并没有改变执行查询的数量。而且我不知道如何includes()在原始查询中使用来包含类别和类别的根。

作为一些额外的信息,类别只能嵌套 2 级深度(只是类别和子类别)。所以根技术上意味着父级,它不必遍历多个级别。

有任何想法吗?

0 投票
0 回答
99 浏览

ruby-on-rails - 通过 ActiveRecord 获取对象图时避免生成 N+1 查询

我有两个模型:AssetItem 和 Title。

  • 一个 AssetItem 属于一个 Title / Title 有很多 assets_items。
  • 一个 Title 可以有一个父 Title(从而创建一个层次结构);Titles 中的这种父/子关系由祖先 gem 管理。

我有一个控制器正在获取一堆 AssetItems。这些 AssetItems 应该带有它们的 Title、Title 的父级和Title的父级等等。最后,控制器以 JSON 格式呈现此对象图。我正在尝试找到一种方法来为给定的资产项急切加载所有标题层次结构。

我在我的控制器中这样做:

这个想法是,获取资产项的集合,然后简单地加载(但不使用)与这些资产项关联的标题 ID,这样当序列化程序执行类似 object.parent.parent.parent.some_attribute 的操作时,它从缓存中获取该标题,而不是从数据库中获取。

但是,日志中的结果与我的预期不符:

如您所见,最初标题 ID 186 和 187 被加载到这里的 where 子句中:

然后在此之下,我们再次看到:

这就是为什么我想知道我做错了什么。任何帮助将不胜感激。

0 投票
1 回答
546 浏览

ruby-on-rails - Rails Ancestry Gem 无法访问孩子/父母

我一直在尝试让 Rails 的祖先 gem 工作,但我似乎无法实现即使是最简单的情况。我是 Rails 新手,所以我很容易犯一个菜鸟错误。

我试图实现的只是一个普通的评论系统,其中对评论的回复将使用祖先的子/父功能显示在同一页面上。

下面是我的显示 html,它有一个回复链接,我正在尝试设置父子关系:

以下是一些控制器方法:

我似乎无法与上述代码建立任何父/子关系

0 投票
0 回答
385 浏览

ruby-on-rails - Ancestry Gem 子树错误(未定义的方法和对象渲染)

我对 Ruby 很陌生,所以我可能只是在这里遗漏了一件简单的事情。

我正在使用 rails Ancestry gem 为我正在编写的 API 生成 JSON 输出。这是控制器:

这会产生正确的输出,显示 ID、供应商、祖先等。

但是,当我.arrange这样添加时:

我得到的输出是:

这看起来像对象的内存位置。为了让这个以排列的形式实际输出对象,我缺少什么基本的东西?

我也尝试过使用arrange_serializable而不是arrange,这给了我一个

undefined method 'arrange_serializable' for #<ActiveRecord::Relation::ActiveRecord_Relation_Vendor:0x4b9b910>

错误

0 投票
0 回答
412 浏览

forms - Rails:类别的嵌套下拉列表

我正在使用祖先 gem 来允许类别嵌套,并且我希望能够在用户为新产品选择类别时创建一个显示嵌套的下拉列表。

我可以创建嵌套列表,但它使用父类别作为选项组的标签,而不是作为可选元素。

第一次尝试

这会产生这样的东西:

当我真正想要的只是:

其他尝试

我还尝试使用内容标签生成列表:

但是,这种方法在 optgroup 标签应该在的列表中留下了空白,并且您不能真正深入 1 级。

所以...

有没有一种方法可以很好地将所有内容嵌套在一个选择中并能够选择每个级别,或者我应该开始考虑使用 javascript/无序列表实现吗?

0 投票
2 回答
465 浏览

ruby-on-rails - Rails 祖先 gem + has_many

我有 2 个模型:帖子和类别

类别 has_many Posts,

帖子属于_to类别,

类别模型使用祖先宝石

目标是获取属于给定类别及其所有祖先的所有帖子。我应该为此简单地使用一个循环还是有一些更聪明的方法来做到这一点?

0 投票
2 回答
1113 浏览

ruby-on-rails - 未定义的方法“根?” 对于零:NilClass

我有一些使用 Ancestry gem 为 Rails 3 构建的类别树我能够在控制台和其他控制器之间使用所有 Ancestry 方法。但是现在我在使用 root 之类的方法时遇到了问题?和 is_root?确定所选猫是否为根类别。

我在应用程序控制器中的代码

我的错误看起来像这样:

0 投票
0 回答
412 浏览

postgresql - Ancestry Tree Gem:通过外键确定范围记录以提高性能?

我正在使用 ruby​​ gem Ancestry ( https://github.com/stefankroes/ancestry ) 来模拟推荐朋友“向前支付”的结构。

在我的表中,我创建了许多不同的树,外键 event_id 是唯一的。每个 event_id 都有一个根节点,然后是它的后代。

我目前有索引:

简单的。

查询变得非常缓慢......查询第一个子级节点的时间超过 350 毫秒。

我想知道是否最好创建一个新索引,例如,

我的理解是,这可以显着加快 LIKE 查询,因为它可以首先将表减少到 event_id 的记录。

数据库是 Heroku 上的 Postgres、Rails 4.1。

谢谢,如果有任何替代/更好的方法,请提出建议。

编辑:添加有关 LIKE 查询的更多信息

查询一级节点:

查询节点的所有后代(间接):

gem 基本上将节点的路径存储为字符串,用 '/' 分隔节点的 id 以到达该节点

0 投票
1 回答
1351 浏览

ruby-on-rails - 使 ActiveAdmin 选择输入以树状结构显示

我有一个具有无限数量的类别和子类别的类别模型 (HABTM)。我之前一直在推出自己的解决方案,但现在我意识到我将不得不使用 Ancestry gem 来完成这项工作。当我完成自己的解决方案时,我能够构建一棵树,因为我在名为 top_level_category 的字段中有一个字段,因此我知道从哪里开始和 parent_id,因此我可以找到沿树向下的路。使用 Ancestry,只有一个字符串类型的列可供构建。是否已经有解决方案,以便我可以轻松地直观地选择一个类别并知道它在树中的位置?

我曾尝试使用 activeadmin-sortable-tree gem,并且可以让它在类别索引页面上工作,但在添加新类别时却不行。