对象的属性

时间:2011-09-08 05:18:38

标签: ruby-on-rails ruby ruby-on-rails-3 mongoid

在Active记录中有attributes_name的功能,通过它我可以检查对象的键,但我可以检查MongoID不是ActiveRecord的对象的空白键, 当我尝试这个时,我收到了以下回复

ruby-1.9.2-p290 :001 > u = User.new
=> #<User _id: 4e684f7771393161cc000001, _type: nil, username: nil, first_name: nil, last_name: nil, email: nil, password: nil, password_salt: nil, password_hash: nil, profile_picture: nil, facebook_id: nil, facebook_enabled: nil, facebook_access_token: nil, twitter_id: nil, twitter_enabled: nil, twitter_access_token: nil, twitter_access_secret: nil, points: nil, remember_token: nil, remember_token_expires_at: nil, active: false, activation_code: nil, activated_at: nil> 
ruby-1.9.2-p290 :002 > u.attributes.keys
=> ["active", "_id"] 

它只显示不是nill的属性,如何查看所有属性,即使是nil? 我实际上想要创建需要使用user.attributes.keys.include?('name')

的函数

3 个答案:

答案 0 :(得分:2)

可能你想要fields。属性或多或少与您从db获得的内容相关,字段是您在模型中定义的内容。以下是我的工作:

User.fields.keys
User.first.fields.keys

答案 1 :(得分:1)

User.attributes.keys

与我合作,但您可以尝试columns

User.columns.map(&:name)

答案 2 :(得分:1)

为了获得与我在Rails 3.2 Ruby 1.8.7上使用的db中的列的顺序相同的键:

User.content_columns.collect{|c| c.send(:name)}

我的特殊用途是从带有对象数组的变量中实现的

@objects.first.class.content_columns.collect{|c| c.send(:name)}
相关问题