Просто пробуя Mongoid в данный момент, я столкнулся с проблемой, которая, вероятно, довольно проста, но я в растерянности:
У меня действительно простая модель статьи:
class Article
include Mongoid::Document
field :title, :type => String
field :content, :type => String
key :title
referenced_in :subject
validates_presence_of :title
end
Я добавил key :title
после того, как уже создал одну тестовую запись.Вновь созданные записи работают, как и ожидалось, но первая статья (которая изначально имела обычный идентификатор объекта mongoid) ведет себя странно:
В представлениях rails эта первая статья по-прежнему возвращает свой идентификатор объекта вместо нового ключа.т. е. использование link_to article.name, article
возвращает:
<a href="/articles/4ef150970a68b38415000003">Show</a>
... когда все остальные возвращают параметризованные ключи, например:
<a href="/articles/other-article">Show</a>
Если я нажимаю эту ссылку, я получаю "Запись не найдена».Я попытался загрузить и сохранить эту запись в консоли, и после этого вызова article.id
для этой записи вернул параметризованный ключ, но он все еще показывает старый способ в представлении и не работает.
Итак, пара вопросов:
- Что здесь происходит?
- Как это исправить?
- Эта ситуация показывает мне, что если вы установите поле наключом является модель mongoid, вы должны быть действительно уверенными, что она никогда не изменится.Как вы справляетесь с чем-то вроде использования названия статьи в качестве пули, тогда, когда они могут иногда нуждаться в изменении?
Спасибо!