В ruby, вот как вы можете проверить подстроку в строке:
str = "hello world"
str.include?("lo")
=> true
Когда я пытаюсь сохранить эмодзи в текстовом столбце в приложении rails (текстовый столбец в базе данных mysql это utf8
), он возвращается с этой ошибкой:
Неверное строковое значение: \ xF0 \ x9F \ x99 \ x82
Для В моей ситуации с приложением rails достаточно посмотреть, есть ли смайлики в представленном тексте. Если присутствует смайлик: выдайте ошибку проверки. Пример:
class MyModel < ApplicationRecord
validate :cannot_contain_emojis
private
def cannot_contain_emojis
if my_column.include?("/\xF0")
errors.add(:my_column, 'Cannot include emojis")
end
end
end
Примечание: Причина, по которой я проверяю \xF0
, заключается в том, что согласно этому сайту , кажется, что все или большинство эмодзи Начните с этой подписи.
Это, однако, не работает. Он продолжает возвращать false
, даже когда это правда. Я почти уверен, что проблема в том, что моя инструкция включения не работает, потому что эмодзи не преобразуется в байты для сравнения.
Вопрос Как я могу сделать проверку, чтобы проверить, что смайлики не передаются?
- Пример байтов для смайлика в UTF8:
\xF0\x9F\x99\x82