我一直在为这个问题寻找不同的解决方案,但我似乎无法找到任何结论,如何最好地处理Rails和Ember之间的多态关系。在我的例子中,我有一个名为“todos”的多态表,其中一个与该表的关系称为“patient”。我得到了todo记录,但他们不知道他们与哪些患者有关。对此有任何帮助将不胜感激。
RAILS模型:
class Todo < ActiveRecord::Base
belongs_to :todoable, polymorphic: true
end
class Patient < ActiveRecord::Base
has_many :todos, as: :todoable
end
RAILS SERIALIZERS:
class TodoSerializer < ActiveModel::Serializer
attributes :id, :content, :todoable_id, :todoable_type
end
class PatientSerializer < ActiveModel::Serializer
attributes :id, :first_name, :last_name, :email
has_many :todos
embed :ids, include: true
end
EMBER数据模型:
App.Todo = DS.Model.extend
todoable_id: DS.attr 'number'
todoable_type: DS.attr 'string'
content: DS.attr 'string'
patient: DS.belongsTo 'patient'
App.Patient = DS.Model.extend
firstName: DS.attr 'string'
lastName: DS.attr 'string'
email: DS.attr 'string'
todos: DS.hasMany 'todo', polymorphic: true, async: true
答案 0 :(得分:3)
这实际上是一种正常的多对一关系(即许多Todos可以属于一个患者),而不是多态关系。如果你说“ Todos可以属于病人或医生或狗”,那么多态可能就是答案。
所以,你可以这样做:
class Todo < ActiveRecord::Base
belongs_to :patient
end
class Patient < ActiveRecord::Base
has_many :todos
end
在恩伯:
App.Todo = DS.Model.extend
patient: DS.belongsTo 'patient'
App.Patient = DS.Model.extend
todos: DS.hasMany 'todo', async: true