使用ActiveAttr Rails Gem自定义类型转换器



我想为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会自动设置。我不知道这是否是最好的解决方案,但效果很好,任何更好的解决方案都是受欢迎的。:)

谢谢伙计们!

相关内容

  • 没有找到相关文章

最新更新