我正在构建后端系统,如Iain Hecker的教程中所写:http://iain.nl/backends-in-rails-3-1,我尝试使用Mongoid将其调整到MongoDB。如何获得Mongoid文档的所有字段名称?
所以,当我需要在后端/ 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
(我扎根后端 “后端/用户#指数”)。 后端::用户从用户继承:
class User
include Mongoid::Document
devise_for :users
field :name
field :address
end
我只需要为用户字段的列表:类,因为我想(即[“电子邮件”,“姓名”,“地址”,... ]),但我打破了我的头试图找到如何。
根据所给示例的上下文以及报告的错误消息,我会假设Yuri在这里与一个类一起工作,而不是一个实例。如果这是真的,那么要求他实例化课程似乎没有必要。 – bloudermilk
@Bloudermilk:对,你是。我已经更新了这个答案,现在使用'Model.fields.keys',因为这将返回正确的字段。 –
谢谢,瑞恩!你的解决方案为我工作。我删除了Backend :: User并写了'a = []; resource_class.all.collect {| r | r.fields.keys.each {| k | a << k}}; a.uniq - %w(_id _type created_at updated_at encrypted_password)'。你不知道我该如何重构这个字符串?我对Ruby有点新) –