Batman.js:未找到多态关联的相关模型未定义。同名命名空间

时间:2014-01-26 20:11:53

标签: polymorphic-associations batman.js

我正在尝试在蝙蝠侠中建立多态关联,如记录here。我正在使用LocalStorage并继续收到以下消息:

Related model undefined for polymorphic association not found.

我的模型如下:

class App1.Model extends Batman.Model
  @persist Batman.LocalStorage

class App1.Superpower extends App1.Model
  @resourceName: 'superpower'
  @encode 'id', 'name'
  @belongsTo 'superpowerable', polymorphic: true

class App1.Hero extends App1.Model
  @resourceName: 'hero'
  @encode 'id', 'name'
  @hasMany 'superpowers', as: 'superpowerable', polymorphic: true

class App1.Villain extends App1.Model
  @resourceName: 'villain'
  @encode 'id', 'name'
  @hasMany 'superpowers', as: 'superpowerable', polymorphic: true

以及我用来实例化所有代码的代码:

superman = new App1.Hero(name: "Superman")
superman.save()
super_strength = new App1.Superpower(name: "Super Strength")
super_strength.save()   # -> gives "Related model undefined for polymorphic association not found."
invincibility = new App1.Superpower(name: "Invincibility")
invincibility.save()    # -> gives "Related model undefined for polymorphic association not found."

superman.get('superpowers').add super_strength
superman.get('superpowers').add invincibility
superman.save()
super_strength.save()
invincibility.save()

console.log superman.toJSON()
console.log super_strength.toJSON()
console.log invincibility.toJSON()

根据this question它取决于命名空间,但它们在我的代码中都是一样的,所以我真的想知道这里出了什么问题。

提前致谢

1 个答案:

答案 0 :(得分:2)

哦,哦......我写了那个例子,如果它不起作用,我应该责怪:)

可以肯定的是,您是否在该脚本的开头调用了App1.run()?上周我ran into that issue while testing - 要打{{1​​}}来加载关联!

修改

哦,看起来就像使用API​​一样恰到好处。您必须明确相关模型的run#{label}_type。 Batman.js会很好地加载JSON中的关联,但是在初始化新记录时你必须指定它们,例如:

#{label}_id

我在它工作的地方设置了一个JSFiddle:http://jsfiddle.net/2atLZ/2/

我将回到文档并添加一个关于此的说明!从长远来看,如果API刚接受super_strength = new App1.Superpower name: "Super Strength" superpowerable_id: superman.get('id'), superpowerable_type: 'Hero' 然后提取#{label}#{label}_id,那就太棒了......但是现在,情况并非如此。!