0

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

A line can have children and parent lines.

我有一个Miniatures模型。

Lines has_many Miniatures through the Minilines table.

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

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

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

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

 <% Miniature.select('distinct *').joins(:lines).where(@line.subtree_conditions).each do |miniature| %>
    <%= link_to miniature.name, miniature %><br />
 <% end %>

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

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

我把代码改成了这个

<% Line.select('distinct *').joins(:miniatures).where(@line.subtree_conditions).each do |miniature| %>
    <%= link_to miniature.name, miniature %><br />
<% end %>

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

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

干杯。

4

1 回答 1

1

在您的第二个代码块中,返回的记录不是Miniature对象,它们是Line对象 - 那是您查询的类,这就是您将获得的类。:)

在第一种情况下,我猜想Linehasidnamecolumns 遮蔽了来自Miniature. 试试这个:Miniature.uniq.joins(:lines).where(@line.subtree_conditions)它会给你一个 SELECT ,它只明确地针对微型表中的字段。

于 2014-02-15T04:34:54.907 回答