複数のフィールド/変数を処理できるように仮想属性を設定する方法があるかどうか疑問に思っています。
基本的に、モデルにはいくつかの異なる整数列 (収入、税金) があり、それぞれについて、フォームが送信されたときに確認し、無効な文字を削除する必要があります。これは、仮想属性を設定し、削除するために使用tr
しています。キャラクター。
def flexible_income
income
end
def flexible_income=(income)
self.income = income.tr('$ ,', '') unless income.blank?
end
そして、必要に応じてコントローラーに強力なパラメーターを設定しています。
params.required(:tax).permit(:flexible_income, :flexible_taxes)
問題は、私が多くのフィールド (上にリストした 2 つ以外) を持っているため、それらのフィールドのそれぞれについて (その多くはまったく同じ不正な文字をチェックする必要があるだけです)、新しい仮想属性を使用しなければならないことです。基本的に同じコードを繰り返すだけです:
def flexible_taxes
taxes
end
def flexible_taxes=(taxes)
self.taxes = taxes.tr('$ ,', '') unless taxes.blank?
end
強力なパラメーターを設定しながら、多くの異なるフィールドに共通の共有属性を設定する方法はありますか?