В моем приложении есть несколько маршрутов, например :user_login/resource/resource_name
пример:
:vlad/photo_albums/my-first-album
Пользователи должны иметь возможность создавать альбомы с именами на родном языке (в моем случае эторусский ).Но если пользователь назвал свой альбом, например, "Привет, Мир!"(что на английском языке «Hello World!»), я хочу использовать строку, в которой все буквы русского алфавита заменены на похожую латиницу в ссылке на ресурс.Например, пользователь предоставляет название альбома "Привет Мир!"и соответствующая ссылка выглядит как vlad / photo_albums / privet-mir.
Я сделал все необходимые методы для перевода русского языка в латинский, но сейчас я пытаюсь найти лучший способ все это организовать.
Первая проблема в том, что мне нужно найти альбом по названию:
@album = @user.albums.
where( :title => params[:album_title] ).first
redirect_to user_albums_path(@user) unless @album
Я бы очень хотел избежать использования чего-либо, кроме латиницы в моих выражениях sql.
Вторая проблема заключается в том, что я не хочу запускать проверки для нелатинской строки (должен ли я быть?), Поэтому я хочу латинизировать и параметризовать ее перед проверкой, но все же сохранить исходную строку, если она является латинизированной версиейпрошел проверку:
validates :title, :presence => true, :length => { :within => (2..25) },
:allow_blank => false, :uniqueness => { :scope => :user_id }
То, о чем я думал, чтобы выполнить это, было сериализацией хэша, например {: latin_version => ...,: original_version => ..} или отдельными концепциями файла yaml.
Мне нужны ваши мысли о том, как правильно это организовать и как это было бы самым элегантным способом.Или я к этому педантичен?Было бы хорошо просто хранить / искать / проверять / отображать нелатинские символы?