gpt4 book ai didi

ruby-on-rails - 尽管被覆盖,但 Friendly_id gem 仍使用 UUID

转载 作者:行者123 更新时间:2023-12-01 01:53:45 24 4
gpt4 key购买 nike

我有一个模型,根据friendly_id gem,它看起来像这样:

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

它应该做的是将 year:'1999-2000' 变成一个 slug: '2000' 和 2000-2...etc 以避免冲突。

不幸的是,我的测试未通过预期:“2000”,得到:“2000-f7608e8b-a2e7-449c-ae54-4785c7a68dec”

我在我的应用程序中的另一个模型上使用friendly_id 并且使用相同的技术,并且它工作得很好。任何有关为什么这不起作用的帮助或建议将不胜感激。

更新
经过更多的实验,我发现这似乎只发生在我的 rspec 测试中 - 但我不明白为什么?有什么想法吗?

最佳答案

我遇到了同样的问题,我通过 解决了它删除 首先是所有 slug 值,然后是 重新运行 我的保存。

###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)

希望能帮助到你。

关于ruby-on-rails - 尽管被覆盖,但 Friendly_id gem 仍使用 UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42150041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com