2014-08-31 58 views
1

我想知道什么最好的解决方案可以使用ActiveRecordenum与Ember数据中的DS.model一起。定义在余烬上的枚举DS.Model

例如,如果我在Rails的模型有一个枚举:

# in the migration 
t.integer :status, default: 0 

# in the model 
enum status: [:draft, :in_wizard, :published, :archived] 

我首先想到的是对DS.model定义一个整数类型:

status: DS.attr('number') 

但是,使用灰烬Data和ActiveModel Serializer,串行器将这些枚举序列化为字符串,所以json最终以:

{status: 'draft'} 

所以这应该是DS.attr('string')还是有一种方法来指定枚举数据中的枚举?

回答

2

是的,您可以将它用作字符串,或者可以将其转换为Serializer中的不同类型,但是,最简单的方法是将其保留为字符串。您可以随时将一些计算出的属性添加到您的模型中:

isDraft: Ember.computed.equal('status', 'draft'), 
isInWizard: Ember.computed.equal('status', 'in_wizard'), 
// etc...