2013-09-28 11 views
9

değiştirmediğime.friendly_id sümüklüböcek ben <code>friendly_id</code> 5.0.0.rc1 ve ayrıca <code>active_admin</code> kullanıyorum güncelleme

active_admin bir kaydın slug nitelik/sütun güncellenmesi şey yapmaz gerçeği dışında, beklendiği gibi mükemmel çalışıyor herşeyi görünür

Sadece kullanarak aynı davranışı bulmak (o bunu aynı tutar) konsol:

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

Benim yapılandırma:

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 

Benim modelim:

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 

benim denetleyicisi:

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 

teşekkürler! dost id kullanırken

+0

kullanmalıdır fakat yapılandırma sülük sütun değişince yeni bir sümüklü böcek üretmek gerektiğini belirtmektedir. el sülük sütunun değerini değiştirmek ve kayıt tasarruf Yani eğer ben oluşturma süreci değişmedi başlığı beri eski sümüklü böcek hangi sonuçları tetiklendiğinde farz ediyorum !? – Vapire

+1

Sorunuzu cevaplamak için: tetiklemez. Ve varsayılan olarak, tam tersini açıklarlar. Yani, def'inizi should_generate_new_friendly_id? her modelde. – Ben

cevap

22

Genellikle, el sümüklü böcek güncellemek olmadı. Bunun yerine, başlığı değiştirdiğiniz her seferinde, otomatik olarak sümük olanı güncelleyecektir.

+1

config.use Module.new (tabii ki her modelde should_generate_new_friendly_id yöntemi tekrar engel olur) yapılandırma dosyasında bulunan {} kısmı basit bir şekilde göz ardı edilir. iyi @Ben düzenleyin varsayılan yapılandırma dosyası – Ben

+0

, sonunda açıklandığı gibi çok yanıltıcı onun> 1 yr yaşındaki şimdi o tarihe kadar ne var tam burada alamadım – AJcodez

+0

şey ...? Bilmek isterdim. Cevabı beğenmediyseniz, varsayılan yapılandırma dosyasında – Ben

1

daha doğrusu sen Belki yanlış yoldan düşünüyorum self.title_changed?

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

'self' biz setter'' için ve biz self' 'olan/olmayan kullanabilirsiniz getter'' için kullanmak gerektiğinde zorunluluk –

İlgili konular