Friendly_id gem 使用 UUID 尽管被覆盖
Friendly_id gem using UUIDs despite being overrriden
我有一个模型,按照friendly_idgem看起来是这样的:
class FinancialYear < ApplicationRecord
extend FriendlyId
friendly_id :slug_candidates, use: :slugged
def slug_candidates
[
:end_year,
[:end_year, :max_id]
]
end
def should_generate_new_friendly_id?
self.slug.blank? || self.year_changed?
end
def end_year
if !self.year.nil? && self.year.length > 1
self.year.split('-')[-1].strip
else
self.year
end
end
def max_id
FinancialYear.where(year: end_year).count + 1
end
end
它应该做的是将年份:'1999-2000' 变成一个 slug:'2000' 和 2000-2...等以避免冲突。
不幸的是,我的测试失败了:“2000”,得到了:“2000-f7608e8b-a2e7-449c-ae54-4785c7a68dec”
我正在我的应用程序的另一个模型上使用 friendly_id 并且我使用的是相同的技术,并且它运行良好。任何关于为什么这不起作用的帮助或建议将不胜感激。
更新
经过更多实验后,我发现这似乎只发生在我的 rspec 测试中 - 但我不明白为什么?有什么想法吗?
我遇到了同样的问题,我通过先 删除 所有 slug 值然后 re-running 我的保存来解决它。
###delete all slug values
User.update_all(:slug=>nil)
###re-run to get the new slug candidate affective overriding the default alpanumeric slug
User.find_each(&:save)
希望对您有所帮助。
我有一个模型,按照friendly_idgem看起来是这样的:
class FinancialYear < ApplicationRecord
extend FriendlyId
friendly_id :slug_candidates, use: :slugged
def slug_candidates
[
:end_year,
[:end_year, :max_id]
]
end
def should_generate_new_friendly_id?
self.slug.blank? || self.year_changed?
end
def end_year
if !self.year.nil? && self.year.length > 1
self.year.split('-')[-1].strip
else
self.year
end
end
def max_id
FinancialYear.where(year: end_year).count + 1
end
end
它应该做的是将年份:'1999-2000' 变成一个 slug:'2000' 和 2000-2...等以避免冲突。
不幸的是,我的测试失败了:“2000”,得到了:“2000-f7608e8b-a2e7-449c-ae54-4785c7a68dec”
我正在我的应用程序的另一个模型上使用 friendly_id 并且我使用的是相同的技术,并且它运行良好。任何关于为什么这不起作用的帮助或建议将不胜感激。
更新 经过更多实验后,我发现这似乎只发生在我的 rspec 测试中 - 但我不明白为什么?有什么想法吗?
我遇到了同样的问题,我通过先 删除 所有 slug 值然后 re-running 我的保存来解决它。
###delete all slug values
User.update_all(:slug=>nil)
###re-run to get the new slug candidate affective overriding the default alpanumeric slug
User.find_each(&:save)
希望对您有所帮助。