Self-Association数组包含其他元素



除了用一个例子之外,我不知道如何解释这一点。我有一个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上调用它会给我们一个包含Mouse的数组。@word.variant,当老鼠被召唤时会给予老鼠。然而,这工作良好,在我看来,我不仅得到了预期的变化,而且得到了一个额外的元素/words

我使用以下代码打印:

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

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

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

我想通了!在我看来,我没有给@word.variations.each打电话,而是给@word.variations.all.each打电话。我在控制器中创建了一个新变量:@variations = @word.variations.all那么在我看来,我对那个变量调用CCD_ 14。

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

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

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

最新更新