discourse/lib/validators
Sam a7628c1d74 FIX: use ordered_posts for last post check, not the posts relation
The `posts` relation on `Topic` is not ordered. Using `Topic.posts.first`
is basically the same as asking for a random post, it will depend on DB
order. This breaks on Topic merge and split for example.

Additionally, a huge problem with that is that it forces active record down
a slow path. `Topic.posts.first` is extremely slow on giant topics, since
it has no default ordering it appears AR materializes the entire set prior
to doing `first`.

This commit also illustrates the importance of testing, initially I only
fixed the second instance of the problem in `post_validator.rb` but testing
revealed that the problem was repeated at the top of the file.

Longer term we should consider a larger change of default ordering the posts
relations so people do not fall down this trap anymore.
2019-01-18 13:18:40 +11:00
..
allow_user_locale_enabled_validator.rb DEV: Enable Style/SingleLineMethods and Style/Semicolon in Rubocop (#6717) 2018-12-04 11:48:13 +08:00
allowed_ip_address_validator.rb Improve IP blocking error message 2015-06-02 07:48:26 +05:30
alternative_reply_by_email_addresses_validator.rb BUG: Load the appropriate file for AlternativeReplyByEmailAddressesValidator 2017-12-19 09:43:41 +11:00
censored_words_validator.rb Make rubocop happy again. 2018-06-07 13:28:18 +08:00
email_setting_validator.rb Add rubocop to our build. (#5004) 2017-07-28 10:20:09 +09:00
email_validator.rb SECURITY: email domain whitelist could be bypassed 2018-01-17 21:45:32 +01:00
enable_local_logins_via_email_validator.rb FEATURE: login by a link from email 2018-02-13 16:14:39 +08:00
enable_private_email_messages_validator.rb Support for sending PMs to email addresses (#4988) 2017-08-28 12:07:30 -04:00
enable_sso_validator.rb FIX: verify presence of 'sso url' before enabling 'enable sso' 2017-12-23 13:30:49 +05:30
integer_setting_validator.rb FIX: bump default max for int site settings to a much higher number 2017-08-24 10:16:41 -04:00
ip_address_format_validator.rb Drop Rails3 support 2014-02-17 19:42:08 +01:00
max_emojis_validator.rb fix the build 2018-10-22 15:09:25 +05:30
max_username_length_validator.rb Remove unecessary code. 2018-10-02 15:24:12 +08:00
min_username_length_validator.rb Remove unecessary code. 2018-10-02 15:24:12 +08:00
password_validator.rb FIX: Password required flag should be cleared whenever clearing the raw password (#5384) 2017-12-01 15:19:24 +11:00
pop3_polling_enabled_setting_validator.rb Make rubocop happy again. 2018-06-07 13:28:18 +08:00
post_validator.rb FIX: use ordered_posts for last post check, not the posts relation 2019-01-18 13:18:40 +11:00
quality_title_validator.rb refactor Topic validation 2013-05-22 22:31:52 -07:00
regex_presence_validator.rb FIX: validate presence of 'top menu' setting 2018-01-17 01:43:53 +05:30
regex_setting_validation.rb allow regex options on username site settings 2017-10-04 15:08:51 -04:00
regex_setting_validator.rb Add rubocop to our build. (#5004) 2017-07-28 10:20:09 +09:00
reply_by_email_address_validator.rb FIX: don't allow spaces in 'reply_by_email_address' site setting 2018-04-17 17:08:12 +02:00
reply_by_email_enabled_validator.rb Add rubocop to our build. (#5004) 2017-07-28 10:20:09 +09:00
sso_overrides_email_validator.rb Add rubocop to our build. (#5004) 2017-07-28 10:20:09 +09:00
string_setting_validator.rb allow regex options on username site settings 2017-10-04 15:08:51 -04:00
stripped_length_validator.rb FIX: less crazy error when post exceeds max length. 2014-07-04 16:39:15 +10:00
topic_title_length_validator.rb Make rubocop happy again. 2018-06-07 13:28:18 +08:00
unique_among_validator.rb refactor Topic validation 2013-05-22 22:31:52 -07:00
upload_url_validator.rb FIX: store the topic links using the cooked upload url 2018-08-14 12:23:32 +02:00
upload_validator.rb FEATURE: Upload Site Settings. (#6573) 2018-11-14 15:03:02 +08:00
url_validator.rb FIX: store the topic links using the cooked upload url 2018-08-14 12:23:32 +02:00
user_full_name_validator.rb FEATURE: make full names a required field of user profiles with the full_name_required setting 2015-04-02 17:08:04 -04:00
username_setting_validator.rb allow regex options on username site settings 2017-10-04 15:08:51 -04:00