招待状の作成時にスラッグを作成したい場合:
私は同じ問題に遭遇しました。
ユーザーを招待するために使用するコマンド:
User.invite!(email: "example@email.com", name: "John John")
問題は、何らかの理由でshould_generate_new_friendly_id?
がこのプロセスで呼び出されないことです。
私の解決策は、ユーザースラッグを作成するメソッドを書くことでした
def slug_me!
new_slug = [name.parameterize].join("-")
if User.where(slug: new_slug).present? #check if the is a user with that slug already
new_slug = [name.parameterize, User.last.id+1].join("-")
end
update_column(:slug, new_slug)
end
(私のアプリでは new_slag は一意になります。アプリについてはわかりません。[name.parameterize, User.last.id+1].join("-")
ニーズに合った別のものに変更する必要があるかもしれません)
invite!
devise が使用するメソッドをオーバーライドします。
def invite!
super
slug_me! if should_generate_new_friendly_id?
end
(if should_generate_new_friendly_id?
同じ人を複数回招待してもスラッグが発生しないように追加しました)
この場合should_generate_new_friendly_id?
は戻ります。true
slug
nil
slug.blank?
true
それは最善の解決策ではないかもしれませんが、私にとってはうまくいきます。(そして、私はまだより良い解決策を探しています)