我有一个使用Lines
gem的ancestry
模型。
A line can have children and parent lines.
我有一个Miniatures
型号。
Lines has_many Miniatures through the Minilines table.
在我的线条视图中,我可以显示该线条的所有相关微缩模型。这很有效。
我希望能够做的是显示该行的所有相关微缩模型,并且它是孩子们。
如果一个微缩线与一条线和一条子树线相关联,它需要使用不同的true或uniq。
在与一些从事祖先宝石工作的人交谈时,我将以下内容放在我的视野中:
<% Miniature.select('distinct *').joins(:lines).where(@line.subtree_conditions).each do |miniature| %>
<%= link_to miniature.name, miniature %><br />
<% end %>
他认为我的问题不是宝石的问题,而是轨道问题。
该代码所做的是建立微缩(正确)的链接,但使用该微型所属的行的name
和id
,而不是name
和{ {1}}缩影。经过大量的摆弄,我非常接近它的工作。
我将代码更改为此
id
它现在输出正确的外观。缩影的<% Line.select('distinct *').joins(:miniatures).where(@line.subtree_conditions).each do |miniature| %>
<%= link_to miniature.name, miniature %><br />
<% end %>
。它也具有正确的name
,但是它恰好链接到miniature_id
路径而不是line
路径。例如,它显示了微型3的名称,但链接到miniature
。
我会继续摆弄它,但如果有人能看到确切的问题我会在月球上。
干杯。
答案 0 :(得分:1)
在第二个代码块中,返回的记录不是Miniature
个对象,它们是Line
个对象 - 这是您查询的类,这是您将获得的类。 :)
在第一种情况下,我猜我会Line
有id
和name
列,它们会隐藏来自Miniature
的列。请尝试这样做:Miniature.uniq.joins(:lines).where(@line.subtree_conditions)
,它将为您提供一个SELECT,该SELECT仅显示微缩模型表中的字段。