Альтернатива для 'attribute_names' в Mongoid? - PullRequest
0 голосов
/ 17 сентября 2011

Я пытался создать бэкэнд-админ, как написано в уроке Иена Хеккера: http://iain.nl/backends-in-rails-3-1, и я пытаюсь адаптировать его к Mongoid.

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

Итак, я попробовал решение, указанное в этом посте: Как я могу получить все имена полей Mongoid Document?

Я попытался использовать «resource_class.fields.keys» вместо «resource_class.attribute_names», но в результате я получил следующую ошибку:

Отображение приложения / views / backend / resource / _index.html.haml где строка # 9

raised:undefined method `id' for [:where, {}]:Array

Извлеченный источник (около строки № 9):

6: %th  
7: %tbody
8: - collection.each do |resource|
9: %tr[resource]
10: - attributes.each do |attr|
11: %td= resource.public_send(attr).to_s.truncate(20)
12: %td

Я новичок в Rails, и я был бы очень признателен, если бы вы могли дать мне несколько советов ..

1 Ответ

1 голос
/ 17 сентября 2011
Contest.first.attributes.map { |attr, value| attr }
 => ["_id", "closing_on", "created_at", "description", "entries", "name"]
...