我想为ActiveAttr Gem创建一个自定义类型转换器。
我有一个Package
类:
class Package
include ActiveAttr::Model
attribute :quantity, :type => Integer
attribute :detail
attribute :type
attribute :order
def shipping
end
end
我有Order
类
class Order
include ActiveAttr::Model
attribute :id, :type => Integer
def test
end
end
在Package类中,我想使用attribute :order, :type => OrderTypecaster
,因为当我创建一个新包(p = Package.new(params['package']
)时,我想自动设置Order id属性。
这可能吗?
我正在使用Rails 3.2.13
谢谢!
我找到了一种不用创建自定义Typecaster就能解决问题的方法。在Package类中我写了两个简单的方法:
def order=(value)
@order = Order.new(value)
end
def order
@order ||= Order.new
end
现在,当我调用package .new(params['package'])时,订单id会自动设置。我不知道这是否是最好的解决方案,但效果很好,任何更好的解决方案都是受欢迎的。:)
谢谢伙计们!