Как ограничить ввод символов из бэкэнда - PullRequest
0 голосов
/ 04 июля 2019

Я выпустил свой первый сайт в RoR, и на меня напали ...

Мой сайт - это простая доска объявлений, на которой можно публиковать статьи с заголовком и содержанием.

Я ограничил количество символов в названии до 150, как это, на мой взгляд

<%= form.text_field :title, :maxlength => 150, class: 'title_input' %>

и вот так в контроллере

def create
  if (params[:article][:title].length > 150)
      render 'new'
  end
  @article = Article.new(params[:id])
  if @article.save
    redirect_to article_path
  else
    render 'new'
  end
end

Но, похоже, это не сработало, пользователь спамит меня заголовком в 75 000 символов, и все они смайлики

Я использую recaptcha для того, чтобы сделать спам менее важным, но 10 таких сообщений достаточно, чтобы отключить мое приложение.

Я не могу забанить его, потому что он продолжает использовать новый IP и менять его так быстро.

У вас есть идеи, как мне это заблокировать?

Спасибо

EDIT

Я решил это с помощью валидатора в моей модели, как это

validates :title, presence: true, length: { in: 1..100 }

Благодаря Sampat

Ответы [ 2 ]

0 голосов
/ 04 июля 2019

Добавьте коды в вашу модель.это ограничит максимальные пределы

class Article < ApplicationRecord
  validates :title, length: { maximum: 500,
    too_long: "%{count} characters is the maximum allowed" }
end
0 голосов
/ 04 июля 2019

Если вы используете поведение rails по умолчанию, используемые вами параметры должны быть пустыми, поскольку правильный хеш должен быть примерно таким: params[:article][:title], или если вы используете сильные параметры: article_params[:title].

Вы действительно проверили, содержит ли params[:title] указанную информацию?Я бы посоветовал вам отладить способ отправки информации на сервер, а затем добавить соответствующее ограничение к правильному ключу параметра

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...