我有一个使用Rails 4,MySql 5.1,gem mysql2的项目。
这个堆栈一直运行到今天。我在表中添加了两个字段(添加了相应的迁移),如果我将数据保存到表中,此字段中的数据看起来很难看,如 - %D0%9D%D0%BE%D0%B4%D0 %B0%D1%80%D0%B8
这是Rails日志:
这是来自请求的数据。一切看起来都不错,' name'并且评论'是俄文。
Parameters: {"{\"user_id\":\"1\",\"name\":\"АБВ\",\"email\":\"mike@outofcloud.ru\",\"answer\":\"5\",\"comment\":\"цувцув\"}"=>nil}
但是在SQL语句中,' name'参数已更改:
SQL (23.3ms) INSERT INTO "feedbacks" ("answer", "code", "comment", "created_at", "email", "name", "updated_at", "user_id") VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING "id" [["answer", 5], ["code", 1], ["comment", "цувцув"], ["created_at", "2015-05-13 08:54:22.047321"], ["email", "example@example.ru"], ["name", **"%D0%90%D0%91%D0%92"**], ["updated_at", "2015-05-13 08:54:22.047321"], ["user_id", "1"]]
'评价'在我的迁移之前添加了字段,它按预期工作。它在数据库和应用程序中看起来很棒。 '名称'最近添加了字段,它没有按预期工作。
有人可以帮忙解决这个问题吗?
答案 0 :(得分:0)
您展示的字符串是在URI.encode
上使用"АБВ"
的结果 - 请参阅:
[4] pry(main)> URI.encode "АБВ"
=> "%D0%90%D0%91%D0%92"
Rails本身并不这样做。你必须在其他地方(或者,希望不是,一个宝石)有一些代码正在进行转换。
如果您不知道它在哪里,请从您的控制器添加显示任何before_action
方法或其他转换的代码。如果您正在执行任何操作before_save
或任何自定义属性设置器,也可以使用模型中的代码。 def name=