gpt4 book ai didi

ruby-on-rails - 将 utf8 字符串存储在数据库中,但验证和参数化音译

转载 作者:太空宇宙 更新时间:2023-11-03 16:37:24 25 4
gpt4 key购买 nike

在我的应用程序中有许多路由,例如 :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 文件概念。

我需要您对如何正确安排以及什么是最优雅的方式的想法。还是我要迂腐?只存储/搜索/验证/显示非拉丁字符可以吗?

最佳答案

存储、验证和搜索非拉丁字符完全没问题。大多数提供多语​​言和国际版本应用程序的 Ruby on Rails 公司在应用程序和数据库层使用 UTF-8。 UTF-8 可以在 Ruby on Rails 和所有主流浏览器中正确地参数化、显示和验证,因此您应该不会在那里看到任何问题。处理此问题的最佳方法是将数据库编码和/或表字符串编码设置为 UTF-8,然后在 application.rb 中设置 Ruby on Rails 编码:

config.encoding = "UTF-8"

如果您使用的是 MySQL 或 Postgres,您可能还想在 database.yml 文件中明确说明数据库编码:

development:  
adapter: mysql2
database: development_db
user: root
password:
encoding: utf8

关于ruby-on-rails - 将 utf8 字符串存储在数据库中,但验证和参数化音译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5767221/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com