在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