アプリに新しい検証を追加する作業を行っています。全体的な考え方は、ユーザーがユーザー名を更新するときに、ユーザー名ポリシーに違反しないようにすることです。
これは、バリデーターの現在の呪文です。
validates_format_of :username, with: /[0-9a-zA-Z_]+/,
on: :update,
if: lambda { |u| u.username_changed? }
この検証でも、悪い文字は通り抜けます。
これが私が使用している私の仕様です:
it "validates and does not update a user with an invalid username" do
user.update_attributes(username: "k~!tten")
expect(user.username).not_to eq "k~!tten"
end
これに関するヘルプは大歓迎です。