Нужно ли использовать attr_accessor? - PullRequest
1 голос
/ 16 января 2012

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

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

1 Ответ

4 голосов
/ 16 января 2012

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

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

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

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

Счастливого кодирования.


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

...