自关联数组包含附加元素

Self Assosiation array contains additional element

除了举个例子,我不知道该如何解释。 我有一个关联到自身的 Words 模型。一个词可以有变体(即该词的不同版本,例如 MouseMice)。

class Word < ActiveRecord::Base
  has_many :variations, class_name: "Word", foreign_key: "variant_id"
  belongs_to :variant, class_name: "Word"
end

调用@word.variations列出基本词的所有变体。例如在 Mouse 上调用它会给我们一个包含 Mice 的数组。 @word.variant,当调用 Mice 时会给 Mouse。但是,这很好用, 在我看来,我不仅得到了预期的变化,而且还得到了一个额外的元素 /words

我正在使用以下代码进行打印:

 <% @word.variations.each do |v| %>
   <%= link_to v.name, v %>,
 <% end %>

打印 Mouse 的变体会产生 Mice, /word,其中 Mice 正确链接到该词的显示页面,/word 链接到 localhost:3000/word

知道是什么原因造成的吗?

我想通了! 在我看来,我不得不调用 @word.variations.all.each 而不是调用 @word.variations.each。我在控制器中创建了一个新变量: @variations = @word.variations.all 然后在我看来,我对该变量调用 .each

<% @variations.each do |v| %>
    <%= link_to v.name, v %>,
<% end %>

这样比较好。出于某种原因 @word.variations 包含那个有趣的额外元素。

如果有人知道为什么会这样,请告诉我。除此之外,问题已得到解答。