我想将下面的哈希值插入到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中完成它。
答案 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
类型。您可能还需要首先序列化哈希值。