をbefore_save:Railsの5.0.1 - Friendly_id宝石 - アクティブな懸念モジュールbefore_createを含めるか、私は、このモジュール作成した
アプリ/モデル/懸念/ 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
を、私はそれを含めますモデル、そのような:
アプリ/モデル/ plan.rb
class Plan < ApplicationRecord
extend FriendlyId
friendly_id :id, :use => :slugged
include Sluggable
end
しかしbefore_createはありません火事ではない。 slugカラムはnot_nullカラムなので、データベースエラーが発生します。
ERROR:モデルに直接set_slugコードを配置する場合は、列「スラッグ」にNULL値は非NULL制約に
に違反し、それが動作します。では、Rails 5の問題についてここでは何が分かりませんか?その何かがFriendlyId使用に関連している場合、私は疑問に思う(私は最初の場所でナメクジを追加した理由です!)
set_slugはクラスメソッドであってはなりません。通常の方法として、プラグイン可能なモジュールの中に書いてください。 –
それは私が最初に試したものです。同じ問題 - 私は最初にそれを持っていた方法(つまり、クラスメソッドとしてではなく)にコードを戻すための質問を更新しました – rmcsharry
'before_save'に変更しても動作しますか? –