1
class Student < CouchRest::Model::Base
   collection_of :phones
   def add_phone(new_phone)
     #this does not work
     #new_phone_ids_list = phone_ids << new_phone.id 
     #this works
     new_phone_ids_list = phone_ids + [new_phone.id]
     self.update_attributes(:phone_id => new_phone_ids_list)
   end
end

不同之处在于,当我使用 phone_ids << new_phone.id 创建新列表并更新 couchdb 时,它不起作用。但如果我使用 phone_ids + [new_phone.id] ,更新将起作用。我知道phone_ids + [new_phone.id]会返回一个新实例,但无法弄清楚为什么phone_ids << new_phone.id 不起作用

4

2 回答 2

0

尝试将 using 直接添加到哈希中:

new_phone_ids_list << new_phone.id
self.update_attributes(:phone_id => new_phone_ids_list)
于 2015-09-09T20:20:20.737 回答
0

从文档中:

除非被替换,否则对集合 ID 属性 (group_ids) 所做的任何手动更改都需要重新加载 CollectionOfProxy 以使两组数据同步

http://www.rubydoc.info/github/couchrest/couchrest_model/CouchRest%2FModel%2FAssociations%2FClassMethods%3Acollection_of

于 2015-09-10T07:24:40.587 回答