我有一个模特:
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
。
抱歉我的英语不好。
答案 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