【问题标题】:Rails Friendly_Id on Heroku, Heroku not updating slugsHeroku 上的 Rails Friendly_Id,Heroku 不更新 slug
【发布时间】:2012-06-13 00:34:43
【问题描述】:

我已经设置了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 字段,但它是空的,我不确定我在哪里出错了。如果有人碰巧以前遇到过这种情况,任何建议将不胜感激。谢谢。

【问题讨论】:

    标签: ruby-on-rails heroku friendly-id


    【解决方案1】:

    当然,这总是很愚蠢的。我真的不知道我是怎么错过的:

    这段代码:

    def should_generate_new_friendly_id?
      new_record?
    end
    

    如果名称更改,有什么可以阻止新的 slugs 生成,也可以阻止它更新以前的帖子。

    我通过注释掉这个问题解决了这个问题,推送,运行 Heroku 控制台然后User.find_each(&:save) 工作得很好,然后我取消注释代码并再次推送到 Heroku,一切都很好。

    希望这对未来的人有所帮助!

    【讨论】:

      【解决方案2】:

      就我而言,这是历史:

      friendly_id :text, use: [:slugged, :history]
      

      应该是

      friendly_id :text, use: :slugged
      

      为了让heroku保存工作......然后我阅读了历史部分

      【讨论】:

        【解决方案3】:

        我可以通过更改我的 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
        

        【讨论】:

          猜你喜欢
          • 2023-03-25
          • 2014-09-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-06
          • 2012-07-06
          • 1970-01-01
          • 2017-02-09
          • 2014-03-28
          相关资源
          最近更新 更多