Как получить доступ к установщику Activerecord, который я переопределил - PullRequest
1 голос
/ 04 апреля 2011

Я хочу использовать пользовательский установщик для форматирования моих полей. В irb, если я проверю сеттер, как:

o.field_name = "4"

Я вижу, что мой пользовательский установщик упоминается. Но с этим это не так:

o[:field_name] = "4"

Я понимаю, что в первом случае это вызов функции, а во втором случае мы просто устанавливаем атрибут напрямую. Но я не совсем понимаю, как можно установить атрибут без прохождения через наш пользовательский установщик, я подумал, что в этом суть.

Но мой главный вопрос в том, что если var содержит мое field_name, я не вижу, как динамически обращаться к a.var и интерпретировать его как a.field_name. Все, что я вижу, это [var], и это обходит моего сеттера.

Ответы [ 2 ]

2 голосов
/ 04 апреля 2011

Попробуйте a.send(var), где var = 'field_name'

Это эквивалент a.field_name

0 голосов
/ 04 апреля 2011

o [: field_name] похоже на read_attribute (: field_name), поэтому просто читает значение, как вы сказали. Это может быть очень важно в виртуальных атрибутах, чтобы обходить стек слишком глубокой ошибкой. Если вы сделаете [: var], вы просто получите его значение. Виртуальный атрибут относится к атрибуту, если вы устанавливаете его значение для другой переменной, вы просто получаете его значение, а не объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...