0

アプリに新しい検証を追加する作業を行っています。全体的な考え方は、ユーザーがユーザー名を更新するときに、ユーザー名ポリシーに違反しないようにすることです。

これは、バリデーターの現在の呪文です。

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

これに関するヘルプは大歓迎です。

4

1 に答える 1

1

ユーザー名はモデルのみ「k~!tten」です。検証に失敗したため、データベースに保存されていません。それ以外の:

expect(user.username).not_to eq "k~!tten"

以下を使用して、ユーザー名が検証に合格しないことを表明します。

expect(user.username).not_to be_valid
于 2013-10-31T21:20:53.863 に答える