1

我想为 ActiveAttr Gem 创建一个自定义 Typecaster。

我有一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

谢!

4

1 回答 1

1

我找到了一种无需创建自定义 Typecaster 即可解决问题的方法。在 Package 类中,我编写了两个简单的方法:

  def order=(value)
    @order = Order.new(value)
  end

  def order
    @order ||= Order.new
  end

现在,当我调用 Package.new(params['package']) 时,订单 ID 会自动设置。我不知道这是否是最好的解决方案,但效果很好,欢迎任何更好的解决方案。:)

伙计们!

于 2013-06-07T01:33:34.227 回答