🖇️

[Rails]ActiveInteractionの引数としてActiveRecord_Relationを指定する

2022/02/28に公開

概要

ActiveInteraction / GitHub の引数として、ActiveRecord_Relationを渡せるようにする方法を示します。

やり方

例: Order クラスの場合

Order の array として指定します。

class UpdateOrders < ActiveInteraction::Base
  array :orders do
    object class: Order
  end
end

こうすることで、 Order::ActiveRecord_RelationOrderArray 受け付けます。
ActiveRecord_Relation のみを指定することはできないですが、大体のケースでこれで問題ないと思います。

どうしても厳密に ActiveRecord_Relation のみを指定したい場合、バリデーションで弾くか、インタラクション内で再取得するなどの方法があります。

うまくいかない例

Order::ActiveRecord_Relation を指定するのだと、エラーになる。

class UpdateOrders < ActiveInteraction::Base
  object :orders, class: Order::ActiveRecord_Relation
end

Discussion