在Heroku上的Rails Friendly_Id,Heroku没有更新slug
我已经设置了friendly_id gem,然后继续使用RailsCasts Screencast 。 本地工作非常出色,我安装了它,运行了User.find_each(&:save)
,成功更新了每个现有用户的slug字段,一切都很好。
我现在已将其推送到Heroku,虽然它适用于任何添加的新成员,但Heroku并未为已有的用户更新用户slug。
运行heroku run console
,然后User.find_each(&:save)
不执行任何操作:
irb(main):001:0> User.find_each(&:save) User Load (20.2ms) SELECT "users".* FROM "users" WHERE ("users"."id" >= 0) ORDER BY "users"."id" ASC LIMIT 1000 (23.6ms) BEGIN (2.0ms) COMMIT (13.6ms) BEGIN (21.1ms) COMMIT => nil
models/user.rb
的相关代码是:
extend FriendlyId friendly_id :name, use: :slugged def should_generate_new_friendly_id? new_record? end
我已经在Heroku上运行了所有数据库迁移,并且它们运行良好。 我检查过, users
表确实有一个slug
字段,但它是空的,我不知道我在哪里出错了。 如果有人碰巧遇到过这种情况,我们将非常感谢任何建议。 谢谢。
当然,它总是愚蠢的。 我真的不确定我是怎么错过这个的:
这段代码:
def should_generate_new_friendly_id? new_record? end
如果更改名称,那么可以阻止新的slu it,也停止更新以前的post。
我解决了这个问题,通过评论,推动,运行Heroku控制台然后User.find_each(&:save)
工作得很好,然后我再次注释代码并再次推送到Heroku,一切都很花花公子。
希望这可能有助于未来的人!
就我而言,这是历史:
friendly_id :text, use: [:slugged, :history]
必须是
friendly_id :text, use: :slugged
为了使heroku保存工作……然后我读了历史部分
我能够通过更改我的should_generate_new_friendly_id?
来解决这个问题should_generate_new_friendly_id?
方法来自
def should_generate_new_friendly_id? title_changed? end
至
def should_generate_new_friendly_id? slug.nil? || title_changed? end