2017-07-03 8 views
3

`length:`はPostgreSQLの文字列で強制されませんか?この表で

create_table "peripherals", id: :serial, force: :cascade do |t| 
    t.string "label", limit: 280 
end 

私は280文字にlabelフィールドを制限します。私はデータベースとしてPostgreSQLを使用しています。

Peripheral.create!(label: ("X" * 700)) 

がなぜ280の私の制限が適用されません。

このレコードは、それより長い280文字であっても、上げ例外なく、データベースに保存されていますか?

+1

validates-length-ofについて何'Peripheral.columns_hash ['label']。limit'を実行するとどうなりますか? – jdgray

答えて

2

これをテストしたところ、DBの検証はうまくいっていますが、この検証を削除してモデルに移動するには、ruby on railを使用することをお勧めします。モデルから が、これはちょうどあなたが見つけることができる最大

class Peripheral < ApplicationRecord 
    validates_length_of :label, :maximum => 280 # there shouls be no more than 280 characters 
    #validates_length_of :label, :minimum => 2 # there shouls be no less than 2 characters 
    #validates_length_of :label, :in => 2..280 # the number of character should be between 2 and 280 
    #validates_length_of :label, :is => 280 # The number of character should be exacly 280 
end 

をチェック見つけると同様に、あなたが以外の操作を行うことができ、他のものの範囲を持って更新するために、はるかに容易になり、より

関連する問題