在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')
的函数答案 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)}