したがって、ユーザーが価格を入力できるフォームがあります。私は、データを正規化するbefore_validationを作成しようとしています。ユーザーがそれを置くと$がクリッピングされます。ユーザー入力を整数に変換する
before_validation do
unless self.price.blank? then self.price= self.price.to_s.gsub(/\D/, '').to_i end
end
データ型はレールが.to_i前に私before_validationに実行し、すべてをクリッピングされる整数であるため、ユーザが入力$ 50は、ユーザ入力50 $場合、このコードは私に0を与えている、このコードは私に50を与える私が考える場合$の後に。データ型が文字列の場合、この同じコードは正常に機能します。
誰かが整数データ型を保つソリューションをお持ちですか?あなたが@model.price = whatever
を行う際
def price=(val)
write_attribute :price, val.to_s.gsub(/\D/, '').to_i
end
だから、それはこの方法の代わりに、レールのデフォルト属性のライターに行きます:
小数点マイsoluction colum価格タイプはありがとうございます。私はいつもbefore_validationを使うのはかなり不器用だと思っていました。これは間違いなくよりエレガントです。 –