我的设置:Rails的STI和多态性灰烬JS
Rails 4.1 with active-model-serializer gem
Ember 1.9.0
Ember-Data 1.0.0 beta with ActiveModelAdapter used as ApplicationAdapter
我有性病的表称为乔布斯有许多亚型。每个作业都有许多LineItems。我在Rails中使用ActiveModelSerializers以Ember-Data理解的方式序列化我的JSON数据。我的模型都建立了这种方式的Rails:
class Job < ActiveRecord::Base
has_many :line_items
...
end
class DisposalJob < Job
...
end
class SupplyJob < Job
...
end
class LineItem < ActiveRecord::Base
belongs_to :job, polymorphic: true
...
end
而且这种方式在灰烬:
App.Job = DS.Model.extend
line_items: DS.hasMany "line_item"
...
App.DisposalJob = App.Job.extend
...
App.SupplyJob = App.Job.extend
...
App.LineItem = DS.Model.extend
job: DS.belongsTo "job",
polymorphic: true
我在Rails的序列化器设置像这样:
class BaseSerializer < ActiveModel::Serializer
ActiveModel::Serializer.setup do |config|
config.embed = :ids
config.embed_in_root = true
end
end
class JobSerializer < BaseSerializer
...
has_many :line_items
end
class DisposalJobSerializer < JobSerializer
...
end
class SupplyJobSerializer < JobSerializer
...
end
class LineItemSerializer < BaseSerializer
belongs_to :job, polymorphic: true
end
我的问题是当我尝试将line_item保存到作业子类(我不直接使用Job类)时,Ember拒绝发现DisposalJob是一种作业,并且抛出一个错误消息,预期它将保存“作业”记录到那个关系,而不是一个“DisposalJob”或“SupplyJob”,尽管这些都是Job的子类。我是Ember新手,所以任何帮助将不胜感激。
编辑:这里是当尝试一个DisposalJob保存在灰烬上的LineItem的工作关系,我得到的错误:
Uncaught Error: Assertion Failed: You can only add a 'job' record to this relationship
编辑:我试过这个重构,使LINE_ITEM同时接受JOB_ID和工作类型而不仅仅是job_id。 Ember仍然告诉我它期待在这种关系中有一份“工作”记录。我已经尝试了通过消除“属于在余烬一方的belongsTo”,并且只有line_item包含job_id:DS.attr“number”和job_type:DS.attr“string”来避免这个问题。这允许我保存记录,但是没有属于关联协会,行项目将不会被发现时,恩贝尔显示它们连接到工作。
是的,我们最终放弃它支持Rails的默认UJS项目,灰烬是不是真的工作了为我们这些非常原因。感谢您的回答。 – 2015-02-06 07:53:33