2017-01-16 2 views
1

У меня есть модель ActivityType, которая создает динамическую страницу после ее создания с помощью слизня, равного slug ActivityType.FriendlyID - Назначение пули перед ее сохранением

Если страница уже существует с этой ошибкой, она вызывает ошибку проверки, поэтому я пытаюсь изменить пул ActivityType перед тем, как он будет сохранен, если предположить, что страница Dynamic уже существует с этим slug.

Я написал следующий код:

def check_and_change_slug 
    n = 1 
    slug = title 
    while DynamicPage.exists?(slug: slug) 
    slug = title + "-#{n}" 
    n + 1 
    end 
end 

Мой вопрос, если я выполняю этот код перед сохранением записи, будет Дружественные ID попытки создать новую слизняка, или просто пойти с одним I 'назначено вручную?

Я просмотрел документацию и ТАК, но не могу найти ничего.

Заранее спасибо.

ответ

1

Вы можете использовать candidates функциональность для того, чтобы достичь этого:

class ActivityType < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :slug_candidates, use: :slugged 

    def slug_candidates 
    n = 1 
    slug = title 
    while DynamicPage.exists?(slug: slug) 
     slug = title + "-#{n}" 
     n += 1 
    end 
    end 
end 
+0

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

+0

@Mark Я обновил свой ответ. Вы можете вставить свой код в метод 'slug_candidates'. Я протестировал его в примерном проекте, и он работал как ожидалось –

+0

Забыл ответить - отлично поработал! – Mark

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