User
ActiveRecrod
モデルと別のクラスUsersFilter
があります。これはモデルのフィルタリングにのみ使用されています。 UsersFilter
は、パラメータハッシュparams = {min_age: '18', max_age: '30', admin: 'true'}
を受け入れます。すべての値は文字列です。これらの値を直接ActiveRecord
に渡すと、クエリが機能します。しかし、私は自分のコードでこれらの値を使用できるようにしたいので、私はそれの周りにいくつかのロジックを構築することができます。そのためには、これらの値を手動で入力する必要があります。だから、UsersFilter
は、次のようになります。ActiveRecord以外のクラスに自動的に型キャスティングする方法は?
class UsersFilter
include ActiveRecord::AttributeAssignment
attr_accessor :min_age, :max_age, :admin
def initialize(params)
params[:min_age] = params[:min_age].to_i
params[:max_age] = params[:min_age].to_i
params[:admin] = ActiveRecord::Type::Boolean.new.type_cast_from_user(params[:admin])
assign_attributes(params)
end
# some query methods
end
だから私の質問です - 私は自動的に行われ、この型キャストを持つためにで混在させることができ、レールモジュールがありますか?
P.S.私は、各属性とそのタイプの間にマッピングを追加する必要があると思います。
混在できるRailsモジュールがあるかどうかはわかりませんが(Rails 4.2以降はありませんでしたが)、[dry-types](http:// dry-rb。 org/gems/dry-types /)クラスの型と値の強制を定義できる宝石 –