我有一个带有文本类型的朋友列的用户模型。运行此迁移以将数组功能与 postgres 一起使用:
add_column :users, :friends, :text, array: true
用户模型有这个方法:
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
以下规范通过,直到我user.reload
在调用后添加#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
这也发生在开发中。模型实例已更新并在数组中具有新的 uid,但是一旦重新加载或以不同的操作重新加载用户,它就会恢复到add_friend
调用方法之前的状态。
使用 Rails 4.0.0.rc2 和 pg 0.15.1
这可能是什么?