понедельник, 25 июля 2011 г.

Re: Создание несамостоятельных сущностей

Что-нибудь типа

after_create :create_attr_set

подойдет?

Кстати, обычно создавать такие зависимые сущности полезно "по-требованию", в ленивом режиме.

Нечто вроде

def props
  @props ||= PropSet.find_or_create(...)
end

25 июля 2011 г. 15:00 пользователь Vladimir <egotraumatic@gmail.com> написал:
Доброго времени суток всем и каждому в сообществе RoR2Ru!

У меня к вам имеется следующий вопрос:

Как создать несамостоятельные сущности, то есть описать, то есть
сообщить, что одна сущность не может существовать не имея (has_one)
или не принадлежа (belongs_to) другой.

Поясню ситуацию: У меня есть базовая модель Post, от которой
наследуются модели Article и Product (STI), Article и Product имеют
помимо базовой таблицы posts таблицы с собственными атрибутами:
article_attr_sets и product_attr_sets. Хочу, чтобы при создании нового
экземпляра Article или Product автоматически создавалась сущность
соответственно ArticleAttrSet или ProductAttrSet. Сейчас это
реализовано совсем коряво:
 #Post model
 def build_own_attr_set
   unless send(self.class.attr_set_name.to_sym)
     send(:"build_" + attr_set_name)
   end
 end

 def self.attr_set_name
   "#{self.to_s.downcase}_attr_set"
 end

before_create :build_own_attr_set

Подозреваю, что в Rails имеется  механизм для реализации этого, но не
знаю как это называется.

Благдарю за помощь!

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ

 Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
 Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
 Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ
 
Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror2ru@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-unsubscribe@googlegroups.com
Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru

Комментариев нет:

Отправить комментарий