mysql - 数据库中删除了尖括号 (<>) 之间的字符?

标签 mysql ruby-on-rails ruby activerecord html-entities

我想将 mysql 正则表达式存储到 mysql 数据库字段。具体来说,我想将单词边界表达式存储到数据库中。例如:

[[:<:]]my expression here[[:>:]]

如果我将这个值直接放入数据库(例如使用 Sequel Pro),该值将被正确存储。

当我想通过 Ruby on Rails 存储这个值时出现问题:

my_instance.sql_expression = "[[:<:]]my expression here[[:>:]]"
my_instance.save 
=> true

但是实际存储到数据库中的值是这样的:

my_instance.sql_expression
=> "[[::]]"

似乎在字符串中,Rails 会忽略“<”和“>”之间的所有内容,包括符号本身。

该项目使用 Ruby 1.8.7 和 Rails 2.3.5。

最佳答案

这听起来像是您在使用类似 xss_terminate 的东西在保存模型之前过滤模型。我会在您的模型定义中查找具有 before_save 或其他可能侵入式执行此操作的 Hook 。

这不是标准的 Rails 行为。

关于mysql - 数据库中删除了尖括号 (<>) 之间的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8412479/

相关文章:

ruby-on-rails - ActiveRecord #find 错误的对象类

ruby-on-rails - Searchkick按价格或名称顺序返回错误的结果顺序

php - 是否有适用于PHP或Ruby的网络搜寻器库?

ruby-on-rails - 在关联中引用集合中的单个对象

mysql - 如何通过 MySQL 查询将所有数据从一个模式插入到另一个模式?

mysql - mysql-simple 执行中不需要 IO 字符串

ruby-on-rails - 静态#home 中的 Haml::SyntaxError?

mysql - DQL 查询失败

php - PHP 循环数组逻辑错误

ruby - 使用 Ruby 的 .days.ago 进行比较似乎使用了反向逻辑