обновление вложенных атрибутов завершается неудачно, потому что проверка уникальности не удалась - PullRequest
0 голосов
/ 18 июня 2011

Вот ассоциации и соответствующие зависимости и валидация

Модель поста: Post has_many: post_tags Пост has_many: теги: through =>: post_tags

Модель тега: validates:content,: uniqueness => true

проблема заключается в следующем: когда я хочу назначить тег для сообщения (т.е. post.tags << new_tag), операция завершается неудачей, если тег с таким же содержимым уже существуетв базе данных из-за сбоя проверки уникальности. </p>

желаемое поведение будет следующим: при назначении нового тега для публикации - если тег уже существует, не пытайтесь создать новый тег, а толькосоздать отношение post_tag.Это позволит избежать ошибки проверки уникальности, но при этом назначить тег для сообщения

  • , если тег не существует, а затем создать новый тег и отношение post_tag.

Каким будет чистый способ сделать это?Спасибо,

-ps Два метода, которые я размышляю, делают создание ассоциации вручную, т.е. не используют функцию вложенных атрибутов.Или переопределив метод AvtiveRecords 'autosave_associated_records_for_tags' в модели UserPost, который обрабатывает автосохранение связанных моделей (в данном случае тегов), и изменив его, чтобы выполнить проверку на наличие тега перед попыткой сохранить его

1 Ответ

0 голосов
/ 18 июня 2011

пользователь find_or_create_by_ {attr}

http://api.rubyonrails.org/classes/ActiveRecord/Base.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...