如何获取Mongoid文档的所有字段名称?

我正在构建后端系统,如Iain Hecker的教程中所述: http ://iain.nl/backends-in-rails-3-1,我尝试使用Mongoid将其改编为MongoDB。

所以,当我需要写入backend / resourse_helper.rb时

module Backend::ResourceHelper def attributes resource_class.attribute_names - %w(id created_at updated_at) end end 

我收到以下错误:

 undefined method `attribute_names' for Backend::User:Class 

(我将后端植根于“后端/用户#index”)。 后端::用户inheritance自用户:

 class User include Mongoid::Document devise_for :users field :name field :address end 

我只需要该用户的字段列表:类,我猜(即[“电子邮件”,“名称”,“地址”,……]),但我试图找到方法。

Mongoid已经为您提供了对象的属性:

 Model.new.attributes 

要获取这些属性的名称:

 Model.fields.keys 

使用内置方法:

 Model.attribute_names # => ["_id", "created_at", "updated_at", "name", "address"] 

需要注意的一点是,Model.fields.keys只列出Model类中定义的字段键。 如果使用动态字段,则不会显示。 Model.attributes.keys还将包含您使用的任何动态字段的属性键。

你在使用attribute_names的正确轨道上。 我想你只需要确保将模块包含在适当的位置。 例如,如果你有相同的模块:

 module Backend::ResourceHelper def attributes resource_class.attribute_names - %w(id created_at updated_at) end end 

你的课应该是这样的:

 class User include Mongoid::Document extend Backend::ResourceHelper devise_for :users field :name field :address end 

然后调用User.attributes应返回["name", "address"]