Rails 5.0.1-Friendly_id gem-包含活动关注模块before_create或before_save

rmcsharry

我已经创建了这个模块:

应用程序/模型/问题/sluggable.rb

module Sluggable
  extend ActiveSupport::Concern

  included do
    before_create :set_slug
  end


  def set_slug
    if self.slug.nil?
      puts 'adding slug'
      self.slug = SecureRandom.urlsafe_base64(5)
    end
  end

end

我将其包含在模型中,如下所示:

app / models / plan.rb

class Plan < ApplicationRecord
  extend FriendlyId
  friendly_id :id, :use => :slugged
  include Sluggable
end

但before_create不会触发。slug列是一个not_null列,因此出现数据库错误。

错误:列“ slug”中的空值违反了非空约束

如果将set_slug代码直接放入模型中,它将起作用。那么,我对Rails 5中的关注点遗漏了什么?

我想知道它是否与使用FriendlyId有关(这就是为什么我首先添加弹头的原因!)

rmcsharry

帮助我解决了这个问题。Friendly_Id如果为nil,则在before_validation回调中设置该段。

因此,我的模块需要在此之前“跳转”。因此,制作不与Friendly_id冲突的模块的解决方案如下。

注意,我需要更改我的钩子的方法名称(因为set_slug是Friendly_Id使用的方法)并且我必须使用prepend:true。这一起导致我的代码在Friendly_Id触发检查尝试并设置之前设置了子弹。

module Sluggable
  extend ActiveSupport::Concern

  included do
    before_validation :set_a_slug, prepend: true
  end


  def set_a_slug
    if self.slug.nil?
      self.slug = SecureRandom.urlsafe_base64(5)
    end
  end

end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails 4 + Friendly_id gem:如何生成带有特定字符串的子弹?

来自分类Dev

Rails gem“ friendly_id”:在创建对象之前,如何获取该块的实时预览

来自分类Dev

Rails 4:Friendly_id gem通过用户名查找用户

来自分类Dev

current_user的friendly_id gem

来自分类Dev

Rails:friendly_id slug 关系

来自分类Dev

为什么Friendly_ID gem使用slug而不是主键?

来自分类Dev

Ruby on Rails 4-嵌套路由的friendly_id

来自分类Dev

将@添加到friendly_id slug Ruby on Rails

来自分类Dev

Rails 4 + Friendly_id:URL未显示任何错误

来自分类Dev

friendly_id slug不是在create上生成的

来自分类Dev

从 rails 4.2 迁移到 5 问题需要降级 ActiveRecord 版本才能使用 1 gem

来自分类Dev

向Rails Friendly_id虚荣网址添加随机唯一引用

来自分类Dev

Rails4 Friendly_id唯一子弹格式

来自分类Dev

在Rails friendly_id中,如何为子弹使用多个属性?

来自分类Dev

friendly_id覆盖SecureRandom uuid /在条形URL上附加数字序列Rails

来自分类Dev

如何在Rails上的ruby中从带有friendly_id的URL中删除模型名称

来自分类Dev

rails,friendly_id,设计用户名不显示showing

来自分类Dev

Rails4 Friendly_id唯一子弹格式

来自分类Dev

Rails 4.1-为许多记录保存friendly_id子弹

来自分类Dev

Rails 4.1-为许多记录保存friendly_id子弹

来自分类Dev

Rails4的页面和用户(类似于Facebook)的URL永久链接。Friendly_id?

来自分类Dev

在Rails friendly_id中,如何为子弹使用多个属性?

来自分类Dev

Rails:如何将参数从friendly_id URL传递给控制器?

来自分类Dev

Rails:将friendly_id/slug 与关联模型中的列一起使用

来自分类Dev

LoadError:无法加载“监听” gem(Rails 5)

来自分类Dev

尝试更新多个记录时,Rails在使用friendly_id时找不到ID为ID的记录

来自分类Dev

如何将旧网址重定向到 rails 应用程序中新的friendly_id 生成的网址?

来自分类Dev

Rails 5 - 当关系是可选的时,对belongs_to 存在的条件before_save 回调

来自分类Dev

在 rails 中隐藏用户 ID(设计 gem)

Related 相关文章

  1. 1

    Rails 4 + Friendly_id gem:如何生成带有特定字符串的子弹?

  2. 2

    Rails gem“ friendly_id”:在创建对象之前,如何获取该块的实时预览

  3. 3

    Rails 4:Friendly_id gem通过用户名查找用户

  4. 4

    current_user的friendly_id gem

  5. 5

    Rails:friendly_id slug 关系

  6. 6

    为什么Friendly_ID gem使用slug而不是主键?

  7. 7

    Ruby on Rails 4-嵌套路由的friendly_id

  8. 8

    将@添加到friendly_id slug Ruby on Rails

  9. 9

    Rails 4 + Friendly_id:URL未显示任何错误

  10. 10

    friendly_id slug不是在create上生成的

  11. 11

    从 rails 4.2 迁移到 5 问题需要降级 ActiveRecord 版本才能使用 1 gem

  12. 12

    向Rails Friendly_id虚荣网址添加随机唯一引用

  13. 13

    Rails4 Friendly_id唯一子弹格式

  14. 14

    在Rails friendly_id中,如何为子弹使用多个属性?

  15. 15

    friendly_id覆盖SecureRandom uuid /在条形URL上附加数字序列Rails

  16. 16

    如何在Rails上的ruby中从带有friendly_id的URL中删除模型名称

  17. 17

    rails,friendly_id,设计用户名不显示showing

  18. 18

    Rails4 Friendly_id唯一子弹格式

  19. 19

    Rails 4.1-为许多记录保存friendly_id子弹

  20. 20

    Rails 4.1-为许多记录保存friendly_id子弹

  21. 21

    Rails4的页面和用户(类似于Facebook)的URL永久链接。Friendly_id?

  22. 22

    在Rails friendly_id中,如何为子弹使用多个属性?

  23. 23

    Rails:如何将参数从friendly_id URL传递给控制器?

  24. 24

    Rails:将friendly_id/slug 与关联模型中的列一起使用

  25. 25

    LoadError:无法加载“监听” gem(Rails 5)

  26. 26

    尝试更新多个记录时,Rails在使用friendly_id时找不到ID为ID的记录

  27. 27

    如何将旧网址重定向到 rails 应用程序中新的friendly_id 生成的网址?

  28. 28

    Rails 5 - 当关系是可选的时,对belongs_to 存在的条件before_save 回调

  29. 29

    在 rails 中隐藏用户 ID(设计 gem)

热门标签

归档