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 *でサポートされている他のデータベース)の列内にハッシュを格納する場合は、次のことを行う必要があります。

1)列をテキストとして定義する

add_column :users, :the_whatever, :text

2)ActiveRecordがデータの処理方法を認識できるように、列のシリアル化を定義します。これを行うには、シリアル化オプションをモデルに設定します。

serialize :the_whatever, Hash

*一部のデータベース(PostgreSQLなど)は、ハッシュの格納により適した他のタイプも提供します。RailscastsHstoreを参照してください。

于 2013-03-22T10:18:51.700 に答える
1

データベースを切り替える場合:PostreSQLにはこのためのhstoreがあります。

于 2013-03-22T11:54:44.890 に答える
0

SQL列はタイプである必要がありますtext。最初にハッシュもシリアル化する必要があるかもしれません。

于 2013-03-22T10:07:52.183 に答える