我會說簡單:
灰燼模型
App.User = DS.Model.extend({
name: DS.attr('string'),
notes: DS.hasMany('App.Note')
});
App.Category = DS.Model.extend({
name: DS.attr('string'),
notes: DS.hasMany('App.Note')
});
App.Note = DS.Model.extend({
text: DS.attr('string'),
user: DS.belongsTo('App.User'),
category: DS.belongsTo('App.Category'),
});
Rails的控制器
class UsersController < ApplicationController
def index
render json: current_user.users.all, status: :ok
end
def show
render json: current_user.users.find(params[:id]), status: :ok
end
end
class CategoriesController < ApplicationController
def index
render json: current_user.categories.all, status: :ok
end
def show
render json: current_user.categories.find(params[:id]), status: :ok
end
end
class NotesController < ApplicationController
def index
render json: current_user.categories.notes.all, status: :ok
# or
#render json: current_user.users.notes.all, status: :ok
end
def show
render json: current_user.categories.notes.find(params[:id]), status: :ok
# or
#render json: current_user.users.notes.find(params[:id]), status: :ok
end
end
注意:這些控制器是一個簡化版本(指數可根據過濾到請求的ID,...)。你可以看看How to get parentRecord id with ember data進一步討論。
活動模型序列化
class ApplicationSerializer < ActiveModel::Serializer
embed :ids, include: true
end
class UserSerializer < ApplicationSerializer
attributes :id, :name
has_many :notes
end
class CategorySerializer < ApplicationSerializer
attributes :id, :name
has_many :notes
end
class NoteSerializer < ApplicationSerializer
attributes :id, :text, :user_id, :category_id
end
我們包括側向載荷數據在這裏,但你可以避開它,在ApplicationSerializer
的include
參數設置爲false
。
的用戶,類別&音符會收到&通過燼數據緩存爲他們來了,並在需要時遺失物品將被要求。
Will Ember Data會根據關聯自動請求使用相應的URL(/users/:user_id/notes.json或/categories/:category_id/notes.json)嗎? – user1539664 2012-07-20 05:55:39
不,它會使用'/ notes',但是你的控制器將確保從(類別|用戶)開始的連接,遍歷關係,所以數據集將被限制爲只有有用的實例。 – 2012-07-20 06:03:56
因此,無法從類別和用戶對象訪問註釋嗎? – 2012-08-17 13:53:30