У меня есть модель, и в соответствии с friendly_id жемчужиной это выглядит следующим образом:Friendly_id камня с помощью UUID, несмотря на overrriden
class FinancialYear < ApplicationRecord
extend FriendlyId
friendly_id :slug_candidates, use: :slugged
def slug_candidates
[
:end_year,
[:end_year, :max_id]
]
end
def should_generate_new_friendly_id?
self.slug.blank? || self.year_changed?
end
def end_year
if !self.year.nil? && self.year.length > 1
self.year.split('-')[-1].strip
else
self.year
end
end
def max_id
FinancialYear.where(year: end_year).count + 1
end
end
Что он должен сделать, это включить в год: «1999-2000» в slug: «2000» и 2000-2 ... и т. д., чтобы избежать столкновений.
К сожалению, мои тесты неудовлетворительные ожидается: «2000», получил: «2000-f7608e8b-a2e7-449c-ae54-4785c7a68dec»
Я использую friendly_id на другую модель в моем приложении, и я использую ту же технику, , и его работа отлично. Любая помощь или предложения относительно того, почему это не работает, будут очень оценены.
UPDATE После еще экспериментов я обнаружил, что это, кажется, происходит только в моих RSpec тесты - но я не понимаю, почему? Есть предположения?
Здесь 'friendly_id: slug_candidates, use:: slugged' вы говорите, что используете метод slug_candidates для установки пули, но вы его не разместили. Вы определили его? – mrlew
opps, обновил вопрос – Ash
Я воспроизвел вашу настройку здесь (объявление того же кода) и не обнаружил ошибок. Пули, в которых заданы «2000-2», «2000-3», «2000-4». Может быть, проблема в другом месте. Печать: http://imgur.com/a/TLvB4 – mrlew