0

我想将下面的哈希值插入到 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

4 回答 4

2

您需要转义哈希中的单引号

于 2013-03-22T10:09:10.783 回答
2

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

1)将列定义为文本

add_column :users, :the_whatever, :text

2) 定义列的序列化,以便 ActiveRecord 知道如何处理您的数据。您可以通过将序列化选项设置为模型来做到这一点。

serialize :the_whatever, Hash

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

于 2013-03-22T10:18:51.700 回答
1

If you're willing to switch the database: PostreSQL has hstore for this.

于 2013-03-22T11:54:44.890 回答
0

您的 sql 列必须是 type text。您可能还需要先序列化您的哈希。

于 2013-03-22T10:07:52.183 回答