次のコードでは、3 つの has-many/belongs-to 関係を確立します。
カテゴリ > サブカテゴリ > アイテム
Category.js.coffee:
class App.Models.Category extends Backbone.RelationalModel
relations: [{
type: Backbone.HasMany
key: 'subcategories'
relatedModel: 'App.Models.Subcategory'
collectionType: 'App.Collections.Subcategories'
reverseRelation: {
key: 'category',
includeInJSON: 'id'
}
}]
App.Models.Category.setup() # Set up BB Relational
Subcategory.js.coffee:
class App.Models.Subcategory extends Backbone.RelationalModel
relations: [{
type: Backbone.HasMany
key: 'items'
relatedModel: 'App.Models.Item'
collectionType: 'App.Collections.Items'
reverseRelation: {
key: 'subcategory',
includeInJSON: 'id'
}
}]
App.Models.Subcategory.setup() # Set up BB Relational
Item.js.コーヒー
class App.Models.Item extends Backbone.RelationalModel
initialize: ->
...
App.Models.Item.setup() # Set up BB Relational
問題:
item.get('subcategory') の呼び出しは期待どおりに機能し、Backbone RelationalModel オブジェクトを返します。ただし、何らかの理由でカテゴリを呼び出すと、汎用の JS オブジェクトが返されます。
item.get('サブカテゴリ').get('カテゴリ')
戻り値:オブジェクト {id: 1, title: "タイトル"}
関連している場合、console.log @subcategory.relations に「collectionKey=subcategory already exists on collection=true」というメッセージが表示されます。