如何获取对象的所有属性,包括那些为零的属性?

时间:2017-01-11 15:53:22

标签: ruby-on-rails mongoid

我需要获取对象的所有属性。我知道有一个方法attributes,但它不会返回nil的属性。 例如:

class User
  include Mongoid::Document

  field :name
  field :email
  field :age
end

u = User.new(email: 'foo@bar.com', name: 'foo')
u.save
u.attributes # {'email' => 'foo@bar.com', 'name' => 'foo'}

我需要u.attributes才能返回{'email' => 'foo@bar.com', 'name' => 'foo' 'age' => nil}

有一种方法as_json可以满足我的需求,但速度要慢得多。速度非常重要。

1 个答案:

答案 0 :(得分:0)

我找到了一个快速解决方案

self.attribute_names.map { |name| [name, self[name]] }.to_h

我想做的就是=)