2

У меня есть модель, используемая для создания корма активность под названием активность, которая имеет следующие столбцы:Лента активности с использованием полиморфного ассоциации не может получить: зависимый =>: уничтожить работу

t.integer "user_id" 
t.datetime "created_at" 
t.datetime "updated_at" 
t.integer "source_id",  :null => false 
t.integer "activity_type", :null => false 
t.text  "data",   :null => false 

Пытаюсь приложить каждое действие к различным типам объектов, которые должны отображаться в фиде (например, добавлены в избранное, новые подключения и т. д.). Следующие ассоциации существуют в настоящее время:

belongs_to :user 
belongs_to :source, :polymorphic => true 

Я пытаюсь использовать source_id в качестве первичного ключа соединительного объекта (например, избранных) и activity_type как перечисление (например, избранных => 1, приглашение => 2) с использованием жемчужина simple_enum.

ВОПРОС: Я не могу получить :dependent => :destroy для работы с моделью «Избранное». Это напоминает мне в исключении, что у меня нет внешнего ключа favorite_id, чтобы он мог чисто удалить Activity после удаления избранного. Как я могу справиться с этим?

ActiveRecord::StatementInvalid (PGError: ERROR: column activities.favorite_id does not exist' 

ответ

2

Я считаю, что поле activity_type следовало бы назвать source_type, что путь Rails может иметь дело с полиморфным вещи автоматически, и вам не нужно будет вручную контролировать его значение с перечислениями.

+0

Да, это правильно. Я должен был посмотреть на Rails Guides для этого - там очень просто. Благодаря! – adarsh

Смежные вопросы