2013-10-29 36 views
0

我想實現類似下面的內容。如何獲得new_attributes散列?如何準備更新的屬性散列更新外部服務

after_save :update_asterisk_contact 

def update_asterisk_contact 
    changes # => [{ "sip_id"=>[334, 355], "updated_at"=>[Tue, 29 Oct 2013 16:03:17 CET +01:00, Tue, 29 Oct 2013 16:08:31 CET +01:00]}] 
    # new_attributes => {'sip_id'=> 355} 
    client = Asterisk::Client.instance 
    client.update(self.id, new_attributes) 
end 

回答

0

如果我理解正確的話,你只需要使用attributes方法:

def update_asterisk_contact 
    client = Asterisk::Client.instance 
    client.update(id, attributes) 
end 
0

只更新所更改的屬性:

def update_asterisk_contact 
    client = Asterisk::Client.instance 
    client.update(id, attributes.slice(changed_attributes.keys)) 
end 

attributes包含了所有的型號屬性的新的價值。 changed_attributes是所有已更改的屬性(但是都帶有舊值),因此我們僅限於已更改的屬性。