我可以在mysql数据库列中存储ruby哈希

时间:2013-03-22 10:05:02

标签: mysql ruby hash

我想将下面的哈希值插入到mysql列中,

{:sub => ["at","div.product-info"],
     1 => [["at","span#hs18Price"]],
     :avail => ["at","strong.out_stock"],
     :soffer =>  ["at","div.freebie"], 
     :stime =>["search","div[@class='costs']//span[@class='days']"],
     :scost => [300,30] }

我试过,它抛出以下错误,

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'costs...

任何帮助?

修改

忘记活动记录和序列化。我想在原始的sql中完成它。

4 个答案:

答案 0 :(得分:2)

您需要转义哈希

中的单引号

答案 1 :(得分:1)

如果你想在MySQL中的列(或AR *支持的任何其他数据库)中存储Hash,你必须:

1)将列定义为文本

add_column :users, :the_whatever, :text

2)定义列的序列化,以便ActiveRecord知道如何处理数据。您可以通过将serialize选项设置为model来完成此操作。

serialize :the_whatever, Hash

*某些数据库(如PostgreSQL)还提供了一些更适合存储哈希的其他类型。请参阅Railscasts Hstore

答案 2 :(得分:1)

如果您愿意切换数据库:PostgreSQL为此hstore

答案 3 :(得分:0)

您的sql列必须是text类型。您可能还需要首先序列化哈希值。