2011-12-07 26 views
2

我想將mysql常規epxression存儲到mysql數據庫字段中。具體而言,我想將單詞邊界表達式存儲到數據庫中。例如:尖括號(<>)之間的字符在數據庫中去掉了嗎?

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

如果我(使用續集專業爲例)把這個值直接進入數據庫中的值被正確地存儲。

時,我想存儲通過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。

+6

你確定保存的內容被損壞嗎?我猜想,被摧毀的是_output_。有關更詳細的信息,請參閱http://stackoverflow.com/questions/4251284/raw-vs-html-safe-vs-h-to-unescape-html,看看是否看起來像這裏發生的事情。 – sarnold

+0

這些示例是從REPL運行並直接粘貼的? (第二次有錯字?) – 2011-12-07 09:01:25

+0

當你存儲' Lorem Ipsum'時,你會得到什麼? –

回答

1

這聽起來像你使用類似xss_terminate來保存它們之前篩選模型。我會在你的模型定義中尋找具有before_save或其他可能會干擾此操作的鉤子。

這不是標準的Rails行爲。

相關問題