How to add to a serialized array How to add to a serialized array ruby ruby

How to add to a serialized array


You can pass a class to serialize:

class User < ActiveRecord::Base  serialize :recent_messages, Arrayend

The above ensures that recent_messages is an Array:

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

Note that you might have to convert existing fields if the types don't match.


It's because the first time you try to push an item to your recent_messages, there's no array to push the item into (the field is nil by default). So you must create the array before you can push to it

@user = current_userif @user.recent_messages.nil?  @user.recent_messages = [params[:message]]else  @user.recent_messages << params[:message]end@user.save


You can also try following code:- By default @user.recent_messages would be nil

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