I have a user model with a friends column of type text. This migration was ran to use the array feature with postgres:

add_column :users, :friends, :text, array: true

The user model has this method:

def add_friend(target) #target would be a value like "1234" self.friends = [] if self.friends == nil update_attributes friends: self.friends.push(target) end

The following spec passes until I add user.reload after calling #add_friend :

it "adds a friend to the list of friends" do user = create(:user, friends: ["123","456"]) stranger = create(:user, uid: "789") user.add_friend(stranger.uid) user.reload #turns the spec red user.friends.should include("789") user.friends.should include("123") end

This happens in development as well. The model instance is updated and has the new uid in the array, but once reloaded or reloading the user in a different action, it reverts to what it was before the add_friend method was called.

Using Rails 4.0.0.rc2 and pg 0.15.1

What could this be?