字段空白时Rails Friendly_id错误

时间:2016-04-13 07:32:54

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

如果数据库中存在重复值,我有friendly_id初始值设定项来缩短值。

# over writing the conflict slug
module FriendlyId
  module Slugged
    def resolve_friendly_id_conflict(candidates)
      candidates.first + friendly_id_config.sequence_separator + SecureRandom.hex(3)
    end
  end
end

我在公司模型中使用此如下

extend FriendlyId
friendly_id :name, use: :slugged

现在,如果我将name留空并测试验证,我将收到以下错误

NoMethodError at /members

undefined method `+' for nil:NilClass


Company#resolve_friendly_id_conflict
config/initializers/friendly_id.rb, line 5

1 个答案:

答案 0 :(得分:1)

如果没有候选人但你的方法没有,你改变的方法能够处理。

查看原始代码......

[candidates.first, SecureRandom.uuid].compact....

契约会降低零值。

我建议您将第一个候选项转换为字符串来处理该情况。

candidates.first.to_s + friendly_id_config.sequence_separator + SecureRandom.hex(3)

更好的是,你可以坚持原始模式......只需用你自己的替换随机字段。

def resolve_friendly_id_conflict(candidates)
  [candidates.first, SecureRandom.hex(3)].compact.join(friendly_id_config.sequence_separator)
end