【发布时间】:2011-01-17 08:47:38
【问题描述】:
我敢肯定这是微不足道的,但过去几个小时我一直在用头撞桌子。我正在尝试在将字符串(即“key1,key2 :”)存储到数据库之前将其转换为数组(即 [“key1”,“key2”])。我在我的模型中使用了 before_validation 回调似乎没有开火。
我的模型如下所示:
class Product < ActiveRecord::Base
serialize :keywords, Array
attr_accessible :keywords
before_validation :update_keywords
def update_keywords
self.update_attributes(:keywords, self.keywords.split(',').collect(&:strip)
end
end
我收到了 SerializationTypeMismatch 错误。显然,update_keywords 方法要么没有运行,要么没有正确返回更新后的属性。
有什么想法吗?
编辑
我使用的是 Rails 3.0.3,如果这有什么不同的话。
编辑 #2
只是想跟进并说我发现删除序列化列类型声明并确保它默认为空数组(即 [])而不是 nil 可以解决许多问题。
为了像我这样刚刚开始使用 Rails 的人,我应该指出,这很可能不是创建序列化属性的最佳方式。我只是在移植一个使用旧数据库的项目。
【问题讨论】:
标签: ruby-on-rails arrays string activerecord model