Я иногда вижу атрибуты/читатели/писатели атрибутов в коде для моделей. Являются ли они необходимыми, если я хочу иметь возможность обновлять атрибуты из кода представления/контроллера?
Я новичок, поэтому я говорю об основных приложениях.
Я иногда вижу атрибуты/читатели/писатели атрибутов в коде для моделей. Являются ли они необходимыми, если я хочу иметь возможность обновлять атрибуты из кода представления/контроллера?
Я новичок, поэтому я говорю об основных приложениях.
attr_accessor является основной особенностью Ruby и используется для генерации переменных экземпляра с помощью методов getter и setter. Его использование никогда не требуется в базовом Ruby (это удобство).
В случае моделей ActiveRecord геттеры и сеттеры уже созданы ActiveRecord для столбцов данных. attr_accessor не требуется или желательно.
Если у вас есть дополнительные данные экземпляра, вам не нужно сохранять (т.е. это не столбец базы данных), вы можете использовать attr_accessor, чтобы сохранить несколько строк кода.
Аналогично названный attr_accessible, который часто встречается в коде Rails и путается с attr_accessor, - это устаревший метод управления массовым присвоением в моделях ActiveRecord. Rails 4 не поддерживает его из коробки; он был заменен сильными параметрами, что позволяет более гранулировать управление.
Если вы объявите attr_accessor, вы можете использовать его как virtual attribute, который в основном является атрибутом модели, который не сохраняется в базе данных.
Пример: вы объявляете attr_accessor :password в своей модели User, чтобы вы могли использовать его в качестве поля в новой пользовательской форме. Когда вы получите свой пароль в соответствующем действии create, вы можете получить hashed_password, сохранить его в базе данных и отбросить заданный password (который выполняется автоматически в конце запроса).
Как правило, довольно неплохо украшать attr_accessor для чего-либо на модели, которая не является фактическим столбцом в таблице SQL. Рельсы 4 или нет. Это дает вам четкое представление о том, что в модели и о том, что сохраняется.
Как правило, я использую attr_accessor для атрибутов, которых нет в модели/базе данных, но я думаю, что их использование необязательно.