0

Ruby on Rails を使用してシネマ サイトを作成しており、レビュー システムを追加しています。ユーザーがレビューで悪口を言うのを止めたいので、次の宝石を試してみました:

validates_decency_of

NoNo

Fu-Fu

近づいた唯一のことは、除外を使用することです。

validates :review_text, :exclusion => { :in => %w(shit fuck fucking twat bitch), :message => "you must not enter swear words"}

しかし、これの問題は、それらの単語しかないレビューに対してのみ機能することです。たとえば、「shit film」と入力すると、それは許可されますが、「shit」という単語は許可されません。

誰か助けてください。

レビュー.rb:

class Review < ActiveRecord::Base
  belongs_to :user
  belongs_to :film

  validates :review_text, :presence => { :message => "Please enter a review"}
  validates :review_text, :length =>   {:maximum => 2000, :message => "The review must not exceed 2000 characters"} 
  validates :review_text, length: { maximum: 2000 }
end
4

3 に答える 3

3

カスタム検証メソッドを追加したいと思うかもしれません。何かのようなもの:

validate :text_must_be_decent

def text_must_be_decent
  if review_text.include?(... list of forbidden words...)
    errors.add(:review_text, 'Wash your mouth out with soap!')
  end
end

http://guides.rubyonrails.org/active_record_validations.html#performing-custom-validationsも参照してください

于 2015-03-25T16:31:25.200 に答える