Использование attr_accessor
не имеет ничего общего с Active Record. Я обсуждаю, как это работает в этом посте , который также связан с AR.
Теперь, что AR делает , это то, что она автоматически создает собственные методы доступа (например, x/x=
) на основе модели базы данных . Эти автоматически созданные методы на самом деле являются просто заглушками, которые он использует для прокси во внутренние операции AR.
Дело в том, что attr_accessor
(автоматически) оборачивает простой доступ к переменной экземпляра, в то время как созданные AR (автоматически) методы оборачивают магию AR. Эти две операции являются взаимоисключающими. Поскольку attr_accessor
не «ссылается» на магию AR, все это может использоваться для создания переходных полей, которые не сохраняются: AR не знает или не заботится о переменных экземпляра.
«Опасность» возникает из-за возможного усложнения объектов модели временной информацией - если она временная, почему она должна быть частью объекта модели? Это аргумент, получивший наибольшее количество голосов в связанном вопросе делает.
Счастливого кодирования.
Однако я не знаю, что произойдет, если использовать attr_accessor
для того же поля, что и в модели AR ... по крайней мере, путаница.