如何获取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"]