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 クラスでは、2 つの単純なメソッドを記述しました。

  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 に答える