ネストされたハッシュをデータベースに保存して取得しようとしていますが、ネストされた値は取得時に失われます。Ruby on Railsにネストされたハッシュを保存する
私のモデルは次のようになります。
class User
serialize :metadata, MetaData
end
クラスのメタデータは次のようになります。
class MetaData < Hash
attr_accessor :availability, :validated
end
私はデータを保存するために使用しているコードは次のようなもの(実際のデータが来ているように見えますしかし、HTMLフォームから):
user = User.find(id)
user.metadata.validated = true
user.metadata.availability = {'Sunday' => 'Yes', 'Monday' => 'No', 'Tuesday' => 'Yes'}
user.save
私はデータベース内のデータを見ると、次のように表示されます。
--- !map:MetaData
availability: !map:ActiveSupport::HashWithIndifferentAccess
Sunday: "Yes"
Monday: "No"
Tuesday: "Yes"
validated: true
私は再びオブジェクトを取得しようとすると、問題が発生します。
user = User.find(id)
user.metadata.validated # <- this is true
user.metadata.availability # <- this is nil
任意のアイデア?私はデータストアとしてPostgreSQLと一緒にRails 3.1を使用しています。
それはHashWithIndifferentAccessとしてHTMLフォームから来ています。これを通常のハッシュに変換することを提案していますか?代わりにそれを保存しますか? – fffanatics
私はそれを通常のハッシュに変換しようとしましたが、同じ問題を抱えています。 – fffanatics