friendly_id
5.0.0.rc1 및 active_admin
을 사용 중입니다.friendly_id 슬러그가 업데이트시 변경되지 않음
slug
속성/컬럼을 업데이트하는 것은 아무것도하지 않는다는 사실을 제외하고, 예상대로 완벽하게 작동되는 모든 나타납니다
는
난 그냥 사용하여 동일한 동작을 찾을 수 있습니다 (이것은 그것에게 동일하게 유지) 콘솔 :p = Post.first
p.slug
#=> 'test'
p.slug = 'another-test'
p.save
#=> true
p.slug
#=> 'test
내 설정 :
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
내 모델 :
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
내 컨트롤러 :
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
감사합니다!
를 사용해야하지만 구성은 슬러그 열이 변경 될 때 새로운 슬러그를 생성해야한다고 주장한다. 따라서 슬러그 열의 값을 수동으로 변경하고 레코드를 저장하면 생성 프로세스가 트리거되어서 제목이 변경되지 않았기 때문에 이전 슬러그가 발생한다고 가정합니다. – Vapire
질문에 대답하십시오 : 그것은 유발하지 않습니다. 그리고 기본적으로 그들은 그 반대를 설명합니다. 그래서 당신은 당신 def_generate_new_friendly_id를 가질 필요가 있습니까? 모든 모델에서. – Ben