自定义Typecaster与ActiveAttr Rails宝石

时间:2013-06-07 00:35:15

标签: ruby-on-rails ruby-on-rails-3 active-attr

我想为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

韩国社交协会!

1 个答案:

答案 0 :(得分:1)

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

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

  def order
    @order ||= Order.new
  end

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

Tks伙计们!