2016-05-02 8 views
0

私はパーセント値の範囲を検証するためのフォームがあります。Rails文字列としてパーセンテージ範囲を検証する

その中には、それが「100%」文字列として通じてくるが、数1.0

としてDBに保存しているしかし、だから私は

を行うカント

良いことがあり、0〜100の間であれば
validates_inclusion_of :number, :in => 1..10 

それは技術的に私は、ユーザーがパーセンテージで番号0-100に置くことを検証したい番号

ないので

+0

このようなものについてはどう: 'validates_numericality_of:数、:greater_than_or_equal_to => 0.0、:less_than_or_equal_to => 1.0'? – trueinViso

+0

@trueinVisoその問題は数字ではなく文字列として保存されることです "number" => "220.0%"、 – user1502223

+0

データベーススキーマはどのように見えますか?フロートではなく文字列のように聞こえる。また、 'number 'の数値も検証したいかもしれません。数値から '%'をトリミングするために 'before_validate'が必要な場合があります。 – evanbikes

答えて

0

数値とフィールドの包含を検証する必要があると思いますので、before_validateに変換してみてください。

before_validate :convert_number_field 

private 

def convert_number_field 
    return unless self.number.is_a? String 

    self.number = number.match(/\d+\.*\d*/).try(:to_f) 
end