ruby-on-rails - 如何添加到序列化数组

标签 ruby-on-rails ruby serialization

我有一个拥有序列化字段的现有用户,我希望能够将最近的消息添加到数组/序列化字段。

class User < ActiveRecord::Base
 serialize :recent_messages
end

在我试过的 Controller 中

@user = current_user
@user.recent_messages << params[:message]
@user.save

但我收到以下错误:

NoMethodError (undefined method `<<' for nil:NilClass):

在我的模式中我有:

create_table "users", :force => true do |t|
    t.text     "recent_messages"
  end

关于我哪里出错的任何想法?

最佳答案

你可以传递一个类给serialize :

class User < ActiveRecord::Base
  serialize :recent_messages, Array
end

上面确保 recent_messages 是一个 Array:

User.new
#=> #<User id: nil, recent_messages: [], created_at: nil, updated_at: nil>

请注意,如果类型不匹配,您可能必须转换现有字段。

关于ruby-on-rails - 如何添加到序列化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19134235/

相关文章:

ruby-on-rails - 如果值不为空,Rails sort_by 方法

ruby-on-rails - 使用 Ruby Mine 后在 Rails 中运行测试的问题

ruby - 以编程方式从字符串派生正则表达式

c# - 使用 xsd.exe 反序列化 - 如何反序列化为对象,而不是数据集?

serialization - 不同类别的不同 SUID

ruby-on-rails - 在 ruby​​ on rails 中使用 slim 而不是 erb 动态传递 id

Jquery ajax 和 Rails 3 -> 加载内容

ruby-on-rails - 有没有办法从 Ruby on Rails 构建输出静态文件?

ruby - 生成 CSV 文件时避免双引号混淆?

Java Jackson从多个模块中选择注册模块将JSON序列化为字符串?