活动记录关联类型不匹配

时间:2014-09-18 18:37:06

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

我在这样的匹配上嵌套了结果

/匹配/ 16 /结果/ 13 /编辑

如果我有以下选择字段,则显示正确的信息(team.name及其team.id)

<%= f.collection_select :winner, @select_winner_loser, :id, :name %>

现在,当我尝试编辑结果并选择获胜者时,我得到了这个:

ActiveRecord :: AssociationTypeMismatch 团队(#10504340)预期,得到字符串(#6163240)

“当分配给关联的对象的类型不正确时引发。” http://api.rubyonrails.org/classes/ActiveRecord/AssociationTypeMismatch.html

Winner是团队对象, result.rb 看起来像这样

class Result < ActiveRecord::Base
    has_one :match
    belongs_to  :winner, class_name: "Team"
    belongs_to  :loser, class_name: "Team"
end

@select_winner_loser来自我的results_controller

  def edit
    @select_winner_loser = []
    @select_winner_loser << @match.top
    @select_winner_loser << @match.bottom
  end

Match.top&amp;底部也是团队对象

class Match < ActiveRecord::Base
    belongs_to  :top, class_name: "Team"
    belongs_to  :bottom, class_name: "Team"
    ...
    belongs_to  :result
end

我不知道为什么我会得到这个,因为我在选择字段中有正确的对象,任何想法?

由于

1 个答案:

答案 0 :(得分:14)

更改

<%= f.collection_select :winner, @select_winner_loser, :id, :name %>

<%= f.collection_select :winner_id, @select_winner_loser, :id, :name %>

和相应的允许参数。当Rails看到名称中的Team时,会创建一个_id对象。