2016-07-19 3 views
1

Использование Rails 5 с животными ID 5.1.0Дружественные ID не обновляя слизняка

Пытаясь понять, как обновить слизняка, когда название Post изменяется.

В документации по доброжелательному удостоверению личности говорится, что вам необходимо обновить слизню до nil, прежде чем вы сможете сохранить обновленный слизень.

Пример

post = Post.first 
post.title # "My first post" 
post.slug = "my-first=post" 
post.title = "My newer first post" 
post.save! 
post.slug # "my-first=post" 

# Setting to nil first 
post.slug = nil 
post.title = "My newer first post" 
post.save! 
post.slug # "my-newer-first-post" 

В моей модели Post Я поставил should_generate_new_friendly_id? в надежде, что будет обновлять слизняк без установки вручную слизняка в nil из консоли или веб-формы.

# == Schema Information 
# 
# Table name: post 
# 
# id   :integer   not null, primary key 
# title  :string   default(""), not null 
# body  :text    default(""), not null 
# created_at :datetime   not null 
# updated_at :datetime   not null 
# slug  :string 
# 
# Indexes 
# 
# index_posts_on_slug (slug) UNIQUE 
# 

class Post < ApplicationRecord 
    extend FriendlyId 
    friendly_id :title, use: :history 

    private 

    def should_generate_new_friendly_id? 
     title_changed? || super 
    end 
end 

ли работа метода should_generate_new_friendly_id? обновления слизняка, если это определено в вашей модели?

Еще раз спасибо.

+0

вы можете перейти к последняя версия friendly_id? – neydroid

+0

Извините за опечатку. Использование 5.1.0. –

ответ

1

Просто добавьте этот метод в вашей модели:

def should_generate_new_friendly_id? 
title_changed? 
end 
Смежные вопросы