Нужно ли использовать attr_accessor?

Я планирую использовать условные проверки в соответствии с тем, что описано в этом Railscast. В Railscast, который является довольно старым, используется attr_accessor (перейдите к более поздней части видео, чтобы увидеть код). Я относительно новичок в программировании рельсов и хотел узнать, что делает attr_accessor. В этом посте спрашивается об его использовании, а в самом популярном ответе говорится, что их вряд ли стоит использовать в рельсах.

Это необходимо / я должен использовать attr_accessor, как это сделано в Railscast? Или эти методы создаются автоматически? Есть ли опасность использования attr_accessor в этом случае?

1 ответ

Решение

С помощью attr_accessor не имеет ничего общего с Active Record. Я обсуждаю, как это работает в этом посте, который также связан с AR.

Теперь, что делает AR, автоматически создает собственные методы доступа (например, x/x=) на основе модели базы данных. Эти автоматически созданные методы на самом деле являются просто заглушками, которые он использует для прокси во внутреннюю работу AR.

Дело в том, attr_accessor (автоматически) оборачивает простой доступ к переменной экземпляра, в то время как созданные AR (автоматически) методы оборачивают магию AR. Эти две операции являются взаимоисключающими. Так как attr_accessor не "связывается" с магией AR, все это может использоваться для создания временных полей, которые не сохраняются: AR не знает или не заботится о переменных экземпляра.

"Опасность" возникает из-за возможного усложнения объектов модели переходной информацией - если она временная, почему она должна быть частью объекта модели? Это аргумент, который дает самый голосующий ответ в связанном вопросе.

Удачного кодирования.


Тем не менее, я не знаю, что произойдет, если использовать attr_accessor для того же поля, что и в модели AR... путаница, по крайней мере.

Другие вопросы по тегам