Есть ли способ установить attr_accessible по умолчанию в проекте rails с Mongoid? - PullRequest
3 голосов
/ 20 марта 2012

Рекомендуемое решение таково:

config.active_record.whitelist_attributes = true

Но это работает, только если вы используете активную запись. На проекте рельсов Mongoid есть подобный подход? Используется активная модель, но не активная запись.

Ответы [ 3 ]

2 голосов
/ 20 марта 2012

Я никогда не использовал Mongoid, так что это довольно умозрительно, но, судя по всему, AR использует инициализатор Railtie для установки attr_accessible (nil), когда эта конфигурация имеет значение true.

Не похоже, что в настоящее время есть способ сделать это в конфигурации, но вы, вероятно, можете каким-то образом подключить его с помощью своего собственного инициализатора. В Mongoid :: Fields, если конфигурация для protect_sensitive_fields равна true (по умолчанию), он вызывает attr_protected для id, _id и _type. Это также устанавливает active_authorizer в черный список. Возможно, вы могли бы исправить это и дать лучшую конфигурацию для белого списка, который вместо этого вызывает attr_accessible (nil).

Так что да, неплохо было бы сделать патч и отправить запрос на удаление. Последнее, что нужно сообществу ruby, - это еще одно фиаско массового назначения.

1 голос
/ 28 марта 2012

Я задавал тот же вопрос

https://groups.google.com/forum/?fromgroups#!topic/mongoid/xuBbuyhiFEU

В настоящее время он не поддерживается, но вы можете сделать (прямой) патч для обезьяны (как Benedikt). предложил)

https://gist.github.com/1977438

Это очень похоже на AR (вы можете проверить код AR, для простоты я скопирую его здесь)

ActiveSupport.on_load(:active_record) do
    if app.config.active_record.delete(:whitelist_attributes)
      attr_accessible(nil)
    end
    app.config.active_record.each do |k,v|
      send "#{k}=", v
    end
  end
1 голос
/ 26 марта 2012

На данный момент это поможет:

http://groups.google.com/group/mongoid/browse_thread/thread/de5a93a350b49c02?pli=1

...