Есть ли способ проверить, что полиморфная ассоциация связана только с одним элементом? например, если у меня есть комментарии, которые являются полиморфными и могут быть на фотографиях, сообщениях и т. д. Я хочу убедиться, что если я добавлю комментарий к списку комментариев в сообщениях, это, если комментарий уже связан с сообщением , добавление не удастся. (ошибка уникальности проверки). Есть идеи?Проверка полиморфной ассоциации?
3
A
ответ
6
Так я предполагаю, что у вас есть что-то вроде этого:
class Comment < ActiveRecord::Base
belongs to commentable, :polymorphic => true
end
class Post < ActiveRecord::Base
has_many :comments, :as => commentable, :dependent => :destroy
end
class Photo < ActiveRecord::Base
has_many :comments, :as => commentable, :dependent => :destroy
end
Если предположить, что Comment
модель имеет несколько атрибутов, как author
и body
(что вы хотите быть уникальным), то вы можете создать пользовательскую проверку в этой модели, как это:
validate do |comment|
if comment.commentable_type.constantize.comments.find_by_author_and_body(comment.author, comment.body)
comment.errors.add_to_base "Duplicate comment added for ..."
end
end
Я также предположил, что комментарии создали что-то вроде этого:
@post.comments.create(:author => name, :body => comment_text)
Смежные вопросы
- 1. Проверка типа полиморфной ассоциации в Rails
- 2. Рельсов полиморфной ассоциации accepts_nested_attributes
- 3. рельсов ссылка полиморфной ассоциации
- 4. Регистрация на полиморфной ассоциации
- 5. Настройка полиморфной ассоциации
- 6. Ошибка полиморфной ассоциации Rails
- 7. проверить уникальность полиморфной ассоциации
- 8. вопрос о полиморфной ассоциации
- 9. доктрина полиморфной ассоциации
- 10. ошибка полиморфной ассоциации
- 11. Рельсы has_many ассоциации через belongs_to полиморфной ассоциации
- 12. Проверка лимита одного или более экземпляров модели в полиморфной ассоциации
- 13. Обновление полиморфной ассоциации в рельсах
- 14. тестирование полиморфной ассоциации в рельсах
- 15. Объекты сегмента в полиморфной ассоциации
- 16. Получить обе стороны полиморфной ассоциации
- 17. Правильное использование полиморфной ассоциации для отчетов
- 18. изменение типа полиморфной ассоциации в рельсах
- 19. Rails ActiveRecord has_many: через полиморфной ассоциации
- 20. Лучшая практика Rails для использования полиморфной ассоциации
- 21. Думая Sphinx - geosearching с has_one полиморфной ассоциации
- 22. Должен ли я отказаться от полиморфной ассоциации?
- 23. Рендеринг объектов полиморфной ассоциации рельсов в JSON
- 24. Как добавить фильтр для полиморфной ассоциации?
- 25. Раскрывающийся фильтр для Полиморфной ассоциации nested_attribute
- 26. Rails Заполнение полиморфной ассоциации через миграции
- 27. От одного до многих в Полиморфной ассоциации
- 28. Обновление пользователя с помощью разработки полиморфной ассоциации
- 29. Изображения Dragonfly в синтаксисе полиморфной ассоциации?
- 30. Удаленный URL-адрес для полиморфной ассоциации (Carrierwave)
Фактически, он является полиморфным с has_many через таблицу соединений, поэтому полиморфная ассоциация находится в таблице соединений. Я просто положил валидацию на _id и _type с областью определения элемента, и он работал нормально. – tesserakt