【发布时间】:2013-09-08 05:23:04
【问题描述】:
我在 MyModel 中有一个序列化哈希,如下所示:
class MyModel < ActiveRecord::Base
serialize :times, Hash
end
我可以对序列化的哈希进行读写操作,如下所示:
# write
my_model.times[:weekday] = "foo"
# read
bar = my_model.times[:weekend]
但是我在times[:weekday] 附近遇到了语法错误,同时尝试这样的事情:
MyModel.where("foo = ? AND times[:weekday] IS NOT NULL", baz)
我在这里错过了什么?
【问题讨论】:
-
您的数据库不知道时间列实际上是一个哈希,只有 Ruby on Rails 知道它。您的数据库将此字段视为字符串。您不能在序列化列上设置条件,只有 NULL 测试(这永远不会正确,因为空数组不会被视为 NULL)
标签: ruby-on-rails ruby activerecord serialization hash