我有一个拥有序列化字段的现有用户,我希望能够将最近的消息添加到数组/序列化字段。
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/