【问题标题】:Friendly_id for fixtures (slugs)固定装置的 Friendly_id(蛞蝓)
【发布时间】:2011-01-30 23:52:54
【问题描述】:

我在我的应用程序中使用了 freindly_id。我在我的应用程序中设置了一些固定装置。我想对它们进行集成测试。在测试期间,我需要friendly_id,但从夹具创建的数据库记录在 Slug 表中没有相应的 slug。

不是从夹具数据自动创建的 slug 吗?如果没有,那有什么解决办法?

【问题讨论】:

    标签: testing fixtures friendly-id


    【解决方案1】:

    最简单的方法是将slugs 添加到夹具数据中:

    # test/fixtures/things.yml
    apple:
      title: Apple
      restricted: hellyes
      slug: apple
    
    # app/model/thing.rb
    class Thing << ApplicationRecord
      extend FriendlyId
      friendly_id :name, use: :slugged
    end
    

    【讨论】:

      【解决方案2】:

      一种解决方案是在测试环境中运行生成 slug 的 rake 任务。

      在 Windows 上

      >set RAILS_ENV=test
      >rake friendly_id:redo_slugs MODEL=xxx
      

      或 Unix/Linux

      >export RAILS_ENV=test
      >rake friendly_id:redo_slugs MODEL=xxx
      

      更新 rake 任务已被删除,请参阅对此答案的评论或friendly_id README。

      【讨论】:

      • 请注意,FriendlyId 4 中的 Rake 任务已消失。作者鼓励您编写自己的脚本/任务来更新旧记录上的 slug。最简单的方法是从控制台运行MyModel.find_each(&amp;:save)。如果需要,将其放入 Rake 任务中会非常简单。
      • 我对这个解决方案有疑问。如果您有确保您的 slug 不为空的验证,那么除非您将其取出,否则这将不起作用。
      猜你喜欢
      • 2013-02-02
      • 2014-03-12
      • 1970-01-01
      • 2022-11-09
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      • 2014-07-30
      • 2016-06-02
      相关资源
      最近更新 更多