2016-07-19 14 views
1

Rails 5 mit freundlicher ID verwenden 5.1.0Freundlich ID nicht Slug Aktualisierung

Dem Versuch, zu verstehen, wie die Schnecke zu aktualisieren, wenn ein Post Titel geändert wird.

In der Friendly ID-Dokumentation heißt es, dass Sie den Slug auf nil aktualisieren müssen, bevor Sie Ihren aktualisierten Slug speichern können.

Beispiel

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" 

In meinem Beitrag Modell habe ich should_generate_new_friendly_id? in der Hoffnung setze sie die Schnecke aktualisieren, ohne manuell den Rohling zu nil von der Konsole oder einem Web-Formular zu setzen.

# == 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 

Ist es die Aufgabe der should_generate_new_friendly_id? Methode, um die Schnecke zu aktualisieren, wenn es in Ihrem Modell definiert wird?

Nochmals vielen Dank.

+0

können Sie bewegen die neueste Version von friendly_id? – neydroid

+0

Sorry für den Tippfehler. Zuletzt mit 5.1.0. –

Antwort

1

Fügen Sie einfach:

def should_generate_new_friendly_id? 
title_changed? 
end