2016-04-13 9 views
0

データベースに重複する値がある場合、値を短縮するfriendly_id初期化子があります。今フィールドブランクのFriendly_idエラー

extend FriendlyId 
friendly_id :name, use: :slugged 

を次のように

# 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 

アム私は次のエラー

NoMethodError at /members 

undefined method `+' for nil:NilClass 


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

名前が空白の場合、デフォルトの文字列を設定するのはどうですか? – margo

答えて

1

方法あなたを取得していますname空白のままにして検証をテストする場合は、当社モデルでこれを使用して候補者がいなければ変更できましたが、方法はありませんでした。

は、コンパクトがnil値をドロップします

[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 
+0

ありがとう@steve –

関連する問題