Подтвердить что ты не робот

Как я могу установить attr_accessible, чтобы НЕ разрешить доступ к ЛЮБОЙ из полей для модели с использованием Ruby on Rails?

Если в файле модели у меня есть только этот код:

class Users < ActiveRecord::Base
end

что это значит? Доступны все атрибуты, связанные с моделью?

Как я могу установить attr_accessible, чтобы не разрешать доступ к любому из полей для этой модели?

4b9b3361

Ответ 1

Просто установите:

class Users < ActiveRecord::Base
  attr_accessible #none
end

Как сказал Пан Томакос (attr_accessible - это массив параметров, который может быть массовым, поэтому, если вы не отправляете никаких символов, то никакие параметры не будут доступны.

Этот билет был полезен

Ответ 2

По умолчанию все атрибуты attr_accessible (что означает, что они могут быть установлены для моего массового назначения).

  • attr_accessible - только этот список атрибутов может быть задан путем массового присвоения (белый список).
  • attr_protected - эти атрибуты не могут быть заданы с помощью массового присвоения (черный список).
  • attr_readonly - эти атрибуты не могут быть установлены, кроме случаев, когда запись создана.

Чтобы полностью отключить массовое присвоение, используйте что-то вроде этого:

ActiveRecord::Base.send(:attr_accessible, nil)

Эта команда отключит массовое присвоение для всех активных объектов записи, но вы можете указать одну или несколько моделей для выполнения этой команды, если вы хотите массовое присвоение в некоторых случаях, но не в других.

Ответ 3

Начиная с Rails 3.1, доступна следующая опция конфигурации для отключения массового присвоения по умолчанию для всех моделей, пока вы явно не вызовете attr_accessible или attr_protected:

config.active_record.whitelist_attributes = true

См. http://edgeguides.rubyonrails.org/security.html#mass-assignment и https://github.com/rails/rails/commit/f3b9d3aba8cc0ffaca2da1c73c4ba96de2066760