Когда я использую attr_accessible
, чтобы указать, какие поля из моей модели будут отображаться, верно ли это для скрипта/консоли? Я имею в виду то, что я не указал, поскольку attr_accessible
не будет доступен также через консоль?attr_accessible in rails Активная запись
ответ
Это относится только к массовому назначению. Например, если вы установите attr_protected :protected
в модели:
>> Person.new(:protected => "test")
=> #<Person protected: nil>
С другой стороны, вы можете установить все атрибуты, которые вы хотите, как получить доступ, используя attr_accessible
.
Однако, следующие будут работать:
>> person = Person.new
=> #<Person protected: nil>
>> person.protected = "test"
=> #<Person protected: "test">
Это такое же поведение, как и в контроллерах, взглядов и т.д. attr_protected
защищает только от массового назначения переменных, в основном из форм и т.д.
Я обнаружил, почему:
Задает белый список атрибутов модели, которые могут быть установлены с помощью массового присваивания, такие как new(attributes)
, update_attributes(attributes)
или attributes=(attributes)
. Это противоположно attr_protected макроса:
Mass-assignment will only set attributes in this list, to assign to the rest of
attributes you can use direct writer methods. This is meant to protect sensitive
attributes from being overwritten by malicious users tampering with URLs or forms.
If you‘d rather start from an all-open default and restrict attributes as needed,
have a look at `attr_protected`.
Так это означает, что он просто избежать массового назначения, но я до сих пор можно установить значение.
Консоль ведет себя точно так же, как и ваше приложение Rails. Если вы защитили некоторые атрибуты для конкретной модели, вы не сможете массово назначать эти атрибуты либо с консоли, либо с самого приложения Rails.
Когда вы указываете, что-то должно быть attr_accessible
, только эти вещи могут быть доступны в консоли или через интерфейс веб-сайта.
например: Предположим, вы сделали name
и email
быть attr_accessible
:
attr_accessible :name, :email
и ушел из created_at
и updated_at
(которые вы должны). Затем вы можете редактировать или обновлять только эти поля в консоли.
Если вы хотите, чтобы выставить поле формы вашей модели, вы можете использовать
attr_accessor :meth # for getter and setters
attr_writer :meth # for setters
attr_reader :meth # for getters
или если вы хотите добавить некоторое поведение в атрибут, вы должны будете использовать виртуальные атрибуты
def meth=(args)
...
end
def meth
...
end
веселит.
- 1. attr_accessible in rails 4
- 2. bypass attr_accessible/protected in rails
- 3. Сортировка Rails активная запись
- 4. Динамические отношения Rails (активная запись)
- 5. активная запись через проблемы
- 6. Rails Активная запись кажется разбитой, Rails 4.0.2
- 7. База данных Agnostic 'или' Query in Rails 4.2. Активная запись
- 8. Rails активная запись активная загрузка не загружает ассоциации
- 9. Активная запись - где IN с несколькими столбцами
- 10. Rails активная запись не сохраняется, как ожидалось
- 11. Активная запись в автономном Ruby
- 12. Weird attr_accessible in Sorcery
- 13. , когда кювет активная запись?
- 14. Rails 4 активная запись и модели
- 15. Ruby on rails поиск массивов (активная запись)
- 16. Активная запись ИЛИ запрос в Rails 4
- 17. Активная запись Найти по столбцу «OR» Rails
- 18. Активная запись (Rails) Безопасное соединение MySQL
- 19. Rails Активная запись Опускание, где пункт
- 20. Rails 4 Активная запись циклическая зависимость ошибки
- 21. Rails - find_by_sql vs активная запись запросов
- 22. Rails Анализировать ошибки проверки Активная запись
- 23. Ruby on Rails Активная запись через
- 24. Rails: limit Активная запись присоединяется к запросу
- 25. Rails - активная запись или файл JSON?
- 26. Rails - attr_accessible & массовое назначение
- 27. Rails Devise attr_accessible problem
- 28. Активная запись группировка
- 29. рельсы Активная запись выбора
- 30. Активная запись: И не работает?