0

Web サイトに不適切な表現のチェックを追加したいと考えています。

私はTDアプローチを採用しており、次のことを試みています。

  1. 特定のプロフィール フィールドに冒とく的な表現が存在するかどうかを確認する
  2. フラグを作成する
  3. フラグが存在しない場合は作成する
  4. 存在するが却下された場合はフラグを作成する

これまでの私の仕様は次のとおりです。

describe Painter do
  before do
    @painter = FactoryGirl.create(:painter_flag)
  end

  context "blacklist flag" do
    it "check if profanity exists" do
      @painter.experience = "test"
      @painter.save
      expect {@painter.blacklist_flags?}.to be_true
    end
    it "create flag if profanity exists" do
      @painter.experience = "test"
      @painter.save
      BlacklistFlag.count.should be > 0
    end
  end
end

ペインター関連のコード:

after_save :create_flag, if: :blacklist_flags?

def blacklist_flags?
    list = ""
    list << skills
    #list << experience
    #list << first_name
    #list << last_name
    #list.downcase.scan(/(badword|badword)/).size > 0
  end

def create_flag
end

2 つのテスト パスの上にある次のコードをコメント アウトすると、次のようになります。

 list << skills

コードをそのままにしておくと、次のエラーが表示されます。

2) 冒涜が存在する場合、ペインター ブラックリスト フラグ作成フラグ 失敗/エラー: @painter = FactoryGirl.create(:painter_flag) TypeError: nil を文字列に変換できません

スキルや経験などがモデルの一部であるため、自己参照に問題があるようです。これを修正する方法がわかりません。お知らせ下さい。

アップデート:

FactoryGirl.define do
  factory :painter do
    first_name "Brian"
    last_name  "Rosedale"
    state "OH"
    zip_code "43081"
    sequence(:email) {|n| "nobody#{n}@painterprofessions.com" }
    phone "12345566"
    pdca_member false
    password "123456"
    factory :painter_flag do
       skills = "badword"
    end
  end
end
4

2 に答える 2

0

工場でこの行を記号:painter_flagなしで使用してください。=

skills "badword"
于 2013-09-26T03:08:54.217 に答える