У меня есть стандартное приложение Rails 2.3.5 с моделью Post. Сообщение имеет атрибут, называемый url, и определен следующий геттер:
def url
p = 'http://'
u = self[:url]
u.starts_with?(p) ? u : "#{p}#{u}"
end
Если я загружу script/console
, я могу выполнить Post.first.url
и получить желаемый результат (например, он возвращает http://foo.com если истинное значение атрибута — foo.com)
Однако, если у меня есть блок form_for
и я делаю что-то вроде form.text_field :url
, он не возвращает URL-адрес с префиксом http://; скорее, он просто возвращает foo.com
Как form_for получает доступ к атрибутам моделей ActiveRecord? Кажется, он обходит любые перегруженные геттеры.