rails - 更改记录后未更新的slug

时间:2014-11-05 08:03:29

标签: ruby-on-rails slug

我有一个模特:

class Page < ActiveRecord::Base
    has_ancestry
    validates :slug, :name, uniqueness: true, presence: true
    before_validation :generate_slug

    def to_param
        slug
    end

    def generate_slug
        name_as_slug = Russian.translit(name).parameterize
        if parent.present?
          self.slug = [parent.slug, (slug.blank? ? name_as_slug : slug.split('/').last)].join('/')
        else
          self.slug = name_as_slug if slug.blank?
        end
    end
end

我的问题是,在记录更改字段“名称”后,我无法更新slug。例如,如果具有/page-1/page-1-1/page-1-1-1的页面的段塞为name: **"Page 1.1"**,则在将名称更改为Page Abrakadabra段塞之后保持相同而不是/page-1/page-1-1/page-abrakadabra

抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

看起来您使用slug.blank?阻止了更改。

这样的事情呢?

def generate_slug
  name_as_slug = Russian.translit(name).parameterize
  return if name_as_slug == slug.split('/').last
  slug_elements = []
  slug_elements << parent.slug if parent.present?
  slug_elements << name_as_slug
  self.slug = slug_elements.join('/')
end