У меня есть стандартное приложение Rails 2.3.5 с моделью под названием Post. 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? Кажется, он обходит любые перегруженные геттеры.