Отношения
class Promotion < ActiveRecord::Base
has_many :promotion_sweepstakes,
has_many :sweepstakes,
:through => :promotion_sweepstakes
end
class PromotionSweepstake < ActiveRecord::Base
belongs_to :promotion
belongs_to :sweepstake
end
class Sweepstake < ActiveRecord::Base
# Not relevant in this question, but I included the class
end
Итак, промоушен has_many Тотализатор через объединяющий стол PromotionSweepstake.Это устаревшая схема БД, поэтому наименование может показаться немного странным, а некоторые свойства self.table_name == и foreign_key пропущены.
Природа этого приложения требует , что по крайней мереодна запись в таблице объединения присутствует для promoId, поскольку отсутствие тотализатора может привести к поломке приложения.
Первый вопрос
Как можно гарантировать, что в PromotionSweepstake всегда есть одна запись дляПродвижение?При создании должен быть включен как минимум один Sweepstake.id, и как только в нем создается запись в объединяемой таблице, должен составлять минимум один для каждого Promotion / promo_id .
Secondвопрос (другой вариант)
Если предыдущее предложение было бы невозможным, что я сомневаюсь в истинности, есть другой способ решения проблемы.Есть своего рода "Sweepstake по умолчанию" с определенным идентификатором.Если через форму будут удалены все sweepstake_ids (чтобы удалить все записи об Акции в таблице присоединения), могу ли я создать новую запись в PromotionSweepstake?
псевдо-код (вид)
удалить promo_sweepstake с идентификаторами [1, 4, 5], где Promotion_id = 1, если в промоушене с id = 1 нет поощрений_свободных стейков.*