2013-06-05 05:58:25 +08:00
|
|
|
class TopicTitleLengthValidator < ActiveModel::EachValidator
|
|
|
|
|
|
|
|
def validate_each(record, attribute, value)
|
2013-06-30 05:57:10 +08:00
|
|
|
title_validator(record).validate_each(record, attribute, value)
|
2013-06-05 05:58:25 +08:00
|
|
|
end
|
2013-06-30 05:57:10 +08:00
|
|
|
|
|
|
|
private
|
|
|
|
|
2018-06-07 13:28:18 +08:00
|
|
|
def title_validator(record)
|
|
|
|
length_range =
|
|
|
|
if record.user.try(:admin?)
|
|
|
|
1..SiteSetting.max_topic_title_length
|
|
|
|
elsif record.private_message?
|
|
|
|
SiteSetting.private_message_title_length
|
|
|
|
else
|
|
|
|
SiteSetting.topic_title_length
|
|
|
|
end
|
2013-06-30 05:57:10 +08:00
|
|
|
|
2018-06-07 13:28:18 +08:00
|
|
|
ActiveModel::Validations::LengthValidator.new(attributes: :title, in: length_range, allow_blank: true)
|
|
|
|
end
|
2013-06-30 05:57:10 +08:00
|
|
|
|
2013-06-05 05:58:25 +08:00
|
|
|
end
|