Ich verwende friendly_id
5.0.0.rc1, und auch active_admin
.friendly_id slug nicht ändern bei update
Es alles erscheinen würde perfekt funktioniert wie erwartet, mit Ausnahme der Tatsache, dass ein slug
Attribut/Spalte in active_admin Rekord Aktualisierung nichts tut (es hält es die gleiche)
ich das gleiche Verhalten finden nur mit Konsole:
p = Post.first
p.slug
#=> 'test'
p.slug = 'another-test'
p.save
#=> true
p.slug
#=> 'test
Meine config:
FriendlyId.defaults do |config|
config.use :reserved
config.reserved_words = %w(admin new edit index session users register)
config.use :finders
config.use :slugged
config.slug_column = 'slug'
config.sequence_separator = '-'
config.use Module.new {
def should_generate_new_friendly_id?
slug.blank? || slug_changed?
end
}
end
Mein Modell:
class Post < ActiveRecord::Base
default_scope { order('created_at DESC') }
validates :title, presence: true
validates :body, presence: true
validates :views, presence: true, numericality: { only_integer: true }
extend FriendlyId
friendly_id :title, use: [:slugged, :history]
end
mein Controller:
class PostsController < ApplicationController
def index
@posts = Post.all.page(params[:page]).per(10)
end
def show
@post = Post.find_by_slug!(params[:id])
if request.path != post_path(@post)
redirect_to @post, :status => :moved_permanently and return
else
@post.increment :views if @post
end
end
end
Dank!
verwenden Vielleicht bin ich die falsche Art und Weise zu denken, aber Ihre Konfiguration besagt, dass es einen neuen Rohling erzeugen soll, wenn die Schnecke Spalte geändert. Wenn Sie also den Wert der Slugspalte manuell ändern und den Datensatz speichern, würde ich davon ausgehen, dass der Generierungsprozess ausgelöst wird, was zu dem alten Slug führt, da sich der Titel nicht geändert hat !? – Vapire
Um Ihre Frage zu beantworten: Es löst nicht aus. Und standardmäßig erklären sie das Gegenteil. Sie müssen also Ihr def sent_generate_new_friendly_id haben? in allen Modellen. – Ben