resource index form callbacks all active ruby-on-rails ruby ruby-on-rails-4 activeadmin friendly-id

ruby-on-rails - index - controller active admin



friendly_id slug no cambia en la actualizaciĆ³n (2)

Estoy usando friendly_id 5.0.0.rc1, y también active_admin .

Parece que todo está funcionando perfectamente como se esperaba, excepto por el hecho de que la actualización del atributo / columna slug un registro en active_admin no hace nada (lo mantiene igual)

Encuentro el mismo comportamiento simplemente usando consola:

p = Post.first p.slug #=> ''test'' p.slug = ''another-test'' p.save #=> true p.slug #=> ''test

Mi configuración:

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

Mi modelo:

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

mi controlador:

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

¡Gracias!


Por lo general, cuando utilizas una identificación amigable, nunca actualizas la babosa manualmente. En lugar:

def should_generate_new_friendly_id? slug.blank? || title_changed? end

Y luego, cada vez que cambie el título, actualizará automáticamente el slug.


más exactamente, ¿debería usar self.title_changed?

def should_generate_new_friendly_id? slug.blank? || self.title_changed? end