Self Assosiation数组包含其他元素

时间:2016-01-04 08:22:43

标签: ruby-on-rails-4 rails-activerecord model-associations

除了一个例子,我不知道如何解释这个。 我有一个与自己联系的单词模型。单词可以有变体(即该单词的不同版本,例如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,当被叫到老鼠时会给老鼠。这工作正常,但是, 在我看来,我不仅得到了预期的变化,还得到了额外的元素/words

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

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

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

知道可能导致这种情况的原因吗?

1 个答案:

答案 0 :(得分:0)

我明白了! 我不得不在我的视图中调用@word.variations.each,而是打电话给@word.variations.all.each。我在控制器中创建了一个新变量: @variations = @word.variations.all 然后在我看来,我在该变量上调用.each

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

这样的方式更好一些。出于某种原因,@word.variations包含有趣的额外元素。

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