Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Aggregations setters 
:(
    Опции темы
OmeZ
Дата 25.7.2008, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 4.11.2007

Репутация: нет
Всего: нет



У меня проблема с composed_of

допустим я создаю 

Код

class Profile << ActiveRecord::Base

composed_of :phone, 
   :class_name=>'PhoneNumber', 
   :mapping=>[%w(area_code area), %w(city_code city), %(phone phone)]

end

class PhoneNumber

   def initialize(area, city, phone)
       @area, @city, @phone = area, city, phone
   end

   def to_s
       # некие действия для получения формата +xxx-xx-xxxxxx
   end

end


таким образом я имею accessor на аттрибут phone и соответственно могу делать

Код

@profile.new(:area_code=>1, :city_code=>800, :phone=>9999999)
@profile.phone #=> #PhoneNumber
@profile.phone.to_s #=> +1-800-9999999

@profile.phone = PhoneNumber.new(1, 900, 6666666)
@profile.phone.to_s #=> +1-900-6666666
@profile.area_code #=> 900
@profile.phone #=> 6666666


Собственно это то что и ожидалось, но мне так же нужно что бы при

Код

@profile.phone = "+1-111-1111111"


я получал то же самое что и при назначении 

Код

@profile.phone = PhoneNumber.new(....)


и собственные поля @profile.area_code .... обновлялись в обратную сторону тоже. Логично для этого добавить перегрузку
Код


class Profile << ActiveRecord::Base

   def phone=(something)
      # здесь делается конверсия типа
      self.phone.load_from_string(something)
   end

end


собственно это работает, но обновляются поля ТОЛЬКО объекта @profile.phone #PhoneNumber но не самого @profile # area_code etc.

в чем моя ошибка? в ДНК?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby on Rails"
source777
  • С чего начать? начинаем
  • Документацию смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby On Rails | Следующая тема »


 




[ Время генерации скрипта: 0.0647 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.