Tôi đang xây dựng hệ thống phụ trợ, như được viết trong hướng dẫn của Iain Hecker: http://iain.nl/backends-in-rails-3-1 và tôi cố gắng thích ứng với MongoDB bằng Mongoid.Làm thế nào tôi có thể nhận được tất cả các tên trường của Tài liệu Mongoid?
Vì vậy, khi tôi cần phải viết trong backend/resourse_helper.rb
module Backend::ResourceHelper
def attributes
resource_class.attribute_names - %w(id created_at updated_at)
end
end
tôi nhận được lỗi sau:
undefined method `attribute_names' for Backend::User:Class
(tôi bắt nguồn từ phụ trợ để "backend/người dùng # index"). Backend :: tài khoản được thừa hưởng từ tài khoản:
class User
include Mongoid::Document
devise_for :users
field :name
field :address
end
tôi chỉ cần một danh sách các lĩnh vực cho người dùng mà: Class, như tôi đoán (ví dụ: [ "email", "tên", "địa chỉ", ... ]), nhưng tôi đã phá vỡ đầu của tôi cố gắng tìm cách.
Dựa trên bối cảnh của ví dụ đã cho, cũng như thông báo lỗi được báo cáo, tôi giả định rằng Yuri đang làm việc với một lớp ở đây, không phải là một ví dụ. nếu đó là sự thật, yêu cầu anh ta để nhanh chóng lớp học có vẻ không cần thiết. – bloudermilk
@Bloudermilk: Đúng vậy. Tôi đã cập nhật câu trả lời này để sử dụng 'Model.fields.keys', vì nó sẽ trả lại các trường đúng. –
Cảm ơn bạn, Ryan! Giải pháp của bạn làm việc cho tôi. Tôi đã gỡ bỏ Backend :: User và đã viết 'a = []; resource_class.all.collect {| r | r.fields.keys.each {| k | một << k}}; a.uniq -% w (_id _type created_at updated_at encrypted_password) '. Bạn không biết làm thế nào tôi có thể refactor chuỗi này? Tôi hơi mới với ruby) –