Rails AssociationTypeMismatch:Clan期望,得到String

时间:2015-10-09 04:02:35

标签: ruby-on-rails

我尝试播放数据库时遇到错误AssociationTypeMismatch: Clan(#92877230) expected, got String

我有2个对象ClanFamily,我有Clan has_many家庭,Family属于Clan的关系。

在我的seed.rb中我有这样的函数:

Family.destroy_all
clans = Clan.all
clans.each do |clan|
  families.each do |family|
    clan.families.create(family) if clan.name == family[:clan]
  end
end

families是应包含所有系列的哈希数组。

从我的搜索中,我认为,在创建family时,它会查找一个部落的ID。

我尝试使用相同的错误添加accepts_nested_attributes_for。

编辑:

我做了一些测试,它看起来像Family对象的clan属性正在解决这个问题。

以下是来自种子的氏族对象的例子:

  {name: "Krab",
  clan_name: "Krab",
  mon_img: "",
  desc: "foo bar foobar"}, 

这是家庭对象的例子:

 { name: "Toritaka",
    clan: "Krab",
    desc: "some text....",
    bonus: "+1 Spostrzegawczość",  
    mon_img: ""}, 

只要我没有设置clan属性,我就可以在控制台中创建任何clan.families。

1 个答案:

答案 0 :(得分:1)

如前所述,问题是由Family对象中的clan变量引起的。除了一些名字冲突之外,别有什么想法。

将名称从'clan'更改为'clan_name'完成了诀窍:)