如何为更新外部服务准备更新的属性哈希

时间:2013-10-29 15:13:05

标签: ruby-on-rails ruby asterisk

我希望实现类似下面的内容。如何获得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

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您只需要使用attributes方法:

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

答案 1 :(得分:0)

仅更新已更改的属性:

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

attributes包含所有模型属性及其新值。 changed_attributes是所有已更改的属性(但使用旧值),因此我们限制已更改的属性。