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

时间:2011-12-07 08:47:01

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

我想将mysql定期epxression存储到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中忽略“&lt;”之间的所有内容和“&gt;”包括标志本身。

该项目在Ruby 1.8.7和Rails 2.3.5中。

1 个答案:

答案 0 :(得分:1)

这听起来像是在使用xss_terminate之类的东西来过滤模型,然后再保存它们。我会在你的模型定义中查找具有before_save或其他钩子的东西,这些钩子可能会侵入性地执行此操作。

这不是标准的Rails行为。

相关问题